在 Excel 中,FILTER 函数本身只负责筛选数据,不具备去重功能。要实现“多条件筛选 + 去重”,必须将 FILTER 与 UNIQUE 函数嵌套使用。
核心逻辑是:先用 FILTER 根据多个条件捞出数据,再用 UNIQUE 对捞出的结果进行去重。
以下是具体的实现方法和公式构建技巧:
一、 核心公式结构
excel=UNIQUE(FILTER(返回区域, (条件1) * (条件2), "无数据"))
返回区域:你希望最终显示的数据列。
条件区域:用于判断的列。
乘号
*:代表逻辑“且”(AND),即所有条件必须同时满足。加号
+:代表逻辑“或”(OR),即满足任一条件即可。"无数据":可选参数,当筛选结果为空时显示的提示文字,避免报错。
二、 多条件构建的关键逻辑
根据搜索结果及 Excel 逻辑运算规则,构建多条件时需理清“且”与“或”的关系:
1. “且”关系(同时满足)用乘号 *
场景:筛选出“部门是行政部”且“学历是本科”的人员名单。
公式:
excel=UNIQUE(FILTER(A2:A100, (B2:B100="行政部") * (C2:C100="本科"), "无匹配"))
解析:
(B2:B100="行政部")和(C2:C100="本科")两个条件相乘,只有两者都为 TRUE(1)时,结果才为 1,从而被保留。
2. “或”关系(满足其一)用加号 +
场景:筛选出“学历是大专”或“学历是本科”的人员名单。
公式:
excel=UNIQUE(FILTER(A2:A100, (C2:C100="大专") + (C2:C100="本科"), "无匹配"))
解析:两个条件相加,只要有一个为 TRUE,结果就不为 0,从而被保留。
3. 混合逻辑(且 + 或)
场景:筛选出“部门是行政部”,且“学历是大专或本科”的不重复名单。
公式:
excel=UNIQUE(FILTER(A2:A100, (B2:B100="行政部") * ((C2:C100="大专") + (C2:C100="本科")), "无匹配"))
解析:
先用括号
((C2:C100="大专") + (C2:C100="本科"))处理“或”关系。再将其结果与
(B2:B100="行政部")进行“且”运算(相乘)。最后由
UNIQUE对结果去重。
三、 常见错误与优化
1. 避免 #CALC! 错误
如果筛选条件过于严格,导致没有数据符合,FILTER 会返回 #CALC! 错误。
解决:务必使用
FILTER的第三个参数[if_empty],例如设置为"无数据"或""(空文本)。
2. 避免空白行干扰去重
如果筛选结果中包含空白单元格,UNIQUE 可能会保留一个空白项。
解决:在
FILTER中增加一个非空判断条件。excel=UNIQUE(FILTER(A2:A100, (B2:B100="行政部") * (A2:A100<>""), ""))
3. 维度必须一致
FILTER 的返回区域和条件区域的行数必须完全一致。
错误示例:返回区域是
A2:A100,条件区域却是B2:B101,这会引发#VALUE!错误。
4. 结合 VSTACK 实现跨表多条件去重
如果需要从多个表中筛选并去重,可以先用 VSTACK 合并,再用 FILTER 筛选,最后 UNIQUE 去重。
excel=UNIQUE(FILTER(VSTACK(Table1!A2:C50, Table2!A2:C50),
(VSTACK(Table1!B2:B50, Table2!B2:B50)="行政部") *
(VSTACK(Table1!C2:C50, Table2!C2:C50)>5000),
"无数据"))
四、 总结
通过合理运用 * 和 + 构建逻辑条件,并外层包裹 UNIQUE,即可轻松实现复杂的多条件筛选去重。
扫一扫在手机打开







