在Excel的数据查询中,VLOOKUP和XLOOKUP只能返回第一个匹配的结果。但实际工作中,我们经常需要把符合条件的所有记录都提取出来。这种“根据一个条件返回多条记录”的需求,就是一对多查询。在旧版Excel中,需要用INDEX+SMALL+IF组合成数组公式,非常复杂。现在有了FILTER函数,一个公式就搞定了。

一、FILTER函数基础语法

FILTER函数是Excel 365和WPS最新版中的动态数组函数,专门用于一对多查询

=FILTER(要返回的区域, 筛选条件, [无结果时返回的内容])

三个参数的作用:

  • 第一参数:要返回的数据范围

  • 第二参数:筛选条件(必须返回TRUE或FALSE)

  • 第三参数:可选,没有符合条件的记录时返回什么

二、实战案例:提取所有“女”生记录

以下图为例,左侧数据表B列是姓名,C列是性别。需要把所有性别为“女”的记录提取出来。

第一步:确定要返回的区域

需要返回的是姓名,所以第一参数选择 B3:B8

第二步:设置筛选条件

条件是“性别等于女”,C列是性别列,所以条件写成 C3:C8="女"

第三步:输入完整公式

在目标单元格输入:

=FILTER(B3:B8, C3:C8="女")

按回车,所有性别为“女”的姓名会自动显示出来。这就是最基本的一对多查询,一个公式把多条记录一次性提取出来。

一对多查询怎么做?FILTER函数一键筛选所有匹配记录-天天办公网
提取所有“女”生记录

三、FILTER函数的更多用法

用法一:返回整行数据

不只是返回姓名,把整行数据都提取出来:

=FILTER(B3:D8, C3:C8="女")

第一参数选择B3:D8(多列),所有符合条件的整行都会被提取。

一对多查询怎么做?FILTER函数一键筛选所有匹配记录-天天办公网
返回整行数据

用法二:多条件筛选

筛选“女”且“绩效为A”的记录:

=FILTER(B3:D8, (C3:C8="女")*(D3:D8="A"))

两个条件用 * 连接,表示“且”的关系。

一对多查询怎么做?FILTER函数一键筛选所有匹配记录-天天办公网
多条件筛选

用法三:设置无结果时的提示

如果没有符合条件的记录,默认返回 #CALC! 错误。可以加第三参数自定义提示:

=FILTER(B3:B8, C3:C8="女", "没有找到记录")

四、版本说明与注意事项

版本要求:FILTER函数目前仅支持 Excel 2021、Office 365 和 最新版WPS。旧版本无法使用。

结果溢出:FILTER返回的是动态数组,结果会自动“溢出”到相邻单元格。如果目标区域有其他内容,公式会报错 #SPILL!,需要先清理周围的单元格。

条件写法:第二参数的条件必须是一个数组,长度要与第一参数的行数一致。

五、总结

一对多查询是Excel数据整理中的高频需求。无论是单条件、多条件,还是搭配排序使用,FILTER都能灵活应对。如果你的Excel版本支持FILTER,一对多查询这件事会简单很多。

相关文章推荐:

Filter函数凭什么碾压Vlookup?职场人必学的Excel高效匹配方法