在Excel的数据查询中,VLOOKUP和XLOOKUP只能返回第一个匹配的结果。但实际工作中,我们经常需要把符合条件的所有记录都提取出来。这种“根据一个条件返回多条记录”的需求,就是一对多查询。在旧版Excel中,需要用INDEX+SMALL+IF组合成数组公式,非常复杂。现在有了FILTER函数,一个公式就搞定了。
一、FILTER函数基础语法
FILTER函数是Excel 365和WPS最新版中的动态数组函数,专门用于一对多查询。
三个参数的作用:
-
第一参数:要返回的数据范围
-
第二参数:筛选条件(必须返回TRUE或FALSE)
-
第三参数:可选,没有符合条件的记录时返回什么
二、实战案例:提取所有“女”生记录
以下图为例,左侧数据表B列是姓名,C列是性别。需要把所有性别为“女”的记录提取出来。
第一步:确定要返回的区域
需要返回的是姓名,所以第一参数选择 B3:B8。
第二步:设置筛选条件
条件是“性别等于女”,C列是性别列,所以条件写成 C3:C8="女"。
第三步:输入完整公式
在目标单元格输入:
=FILTER(B3:B8, C3:C8="女")
按回车,所有性别为“女”的姓名会自动显示出来。这就是最基本的一对多查询,一个公式把多条记录一次性提取出来。

三、FILTER函数的更多用法
用法一:返回整行数据
不只是返回姓名,把整行数据都提取出来:
=FILTER(B3:D8, C3:C8="女")
第一参数选择B3:D8(多列),所有符合条件的整行都会被提取。

用法二:多条件筛选
筛选“女”且“绩效为A”的记录:
=FILTER(B3:D8, (C3:C8="女")*(D3:D8="A"))
两个条件用 * 连接,表示“且”的关系。

用法三:设置无结果时的提示
如果没有符合条件的记录,默认返回 #CALC! 错误。可以加第三参数自定义提示:
=FILTER(B3:B8, C3:C8="女", "没有找到记录")
四、版本说明与注意事项
版本要求:FILTER函数目前仅支持 Excel 2021、Office 365 和 最新版WPS。旧版本无法使用。
结果溢出:FILTER返回的是动态数组,结果会自动“溢出”到相邻单元格。如果目标区域有其他内容,公式会报错 #SPILL!,需要先清理周围的单元格。
条件写法:第二参数的条件必须是一个数组,长度要与第一参数的行数一致。
五、总结
一对多查询是Excel数据整理中的高频需求。无论是单条件、多条件,还是搭配排序使用,FILTER都能灵活应对。如果你的Excel版本支持FILTER,一对多查询这件事会简单很多。