【Excel教程】使用FILTER函数进行数据筛选

在Excel中查找或统计某列中包含特定内容的数据时,估计很多人都会使用【数据】→【筛选】功能。如下图所示。

但是在Excel 2019、2021以及Microsoft 365等版本中新增了一个能够实现筛选功能的函数,这个函数便是FILTER函数。
本文使用的Excel版本为:Excel 2021,如需安装Office 2021可在公众号中查阅教程:《安装部署Microsoft Office LTSC 专业增强版 2021》,如需安装Office 2019可在公众号中查询教程:《Office 2019 专业增强版、企业版(VOL)安装教程》。
如需本次教程练习文件可根据底部给定方式获取。
01 FILTER函数语法
FILTER 函数可以基于给定的条件筛选一系列数据,也就是FILTER函数运算之后得到的是一组数据,这组数据可能只有一个值,也可能有多个值。官方给出的语法结构如下图所示。

可以看到该函数共有3个参数可供输入。用一段话来将这3个参数串起来解释这个函数,即:需要从参数①区域中筛选出符合参数②中逻辑条件的一组数据输出至单元格区域中,如果没有满足参数②中逻辑条件的内容,则在单元格中输出参数③所设置的内容。如果理解不了这段话可以往下看这3个参数的详细解释。 再来详细解释这3个参数。
(1)第一个参数为一个数据区域,该数据区域既可以是一列数据(比如该参数设置为A:A代表设置区域为A列),也可以是多行多列的一个数据块(比如设置为A1:D9代表该参数为A1单元格与D9单元格围成的一个9行4列的数据区域)。
(2)第二个参数为一个筛选条件,比如条件设置为:B列中单元格内容等于F2单元格的值,可以写成B:B=F2。
(3)第三个参数为可选参数,也就是该参数可有可无,可根据实际需求进行设置,其功能为:如果根据参数②的筛选条件找不到符合条件的内容的话,就在单元格中显示参数③的值,比如查找不到符合参数②中条件的内容可以在单元格中输出“未找到”。而如果不设置该参数,并且查找不到符合参数②条件的内容的话,单元格中会提示错误:#CALC!,该错误表示结果为空数组。
要特别注意的是第一个参数和第二个参数中涉及到的起始行和结束行一般应保持一致,否则单元格中可能会出现#VALUE!错误或单元格结果不正确的情况。

上图中右侧错误示例的运行结果如下图所示(可点击图片放大查看)。紫色圈出的部分由于第一个参数和第二个参数中的单元格起始区域不一致,导致数据出现偏移。

除此之外,还要注意该函数运算之后的结果为一组数据,要留够用于显示该组数据的空间,比如上图中使用该函数筛选出的人员有3人(分别为小松、小白和小蓝),因此计算结果需要用3个单元格来显示,而如果用于显示“小白”或“小蓝”的单元格中有其他内容占用了的话就会提示错误#SPILL!,如下图所示,代表溢出区域不是空白区域,简单来说就是原本用于显示结果的区域被其他内容给占用了,空间不够。

02 FILTER函数使用示例
介绍完FILTER函数的语法及部分注意事项之后,我们以实际案例来演示该函数的用法。 案例(1):单一条件筛选。如下图所示,查找部门为G2单元格内容的人员名单。

由于只需要查找人员姓名,而姓名在C列,因此,在FILTER函数中,第一个参数设置为C:C。 而要查找的G2单元格内容,也就是部门名称在B列,所以第二个参数设置为B:B=G2,意思是如果B列中内容等于G2单元格中内容。 为了让函数写的更完美些,可以设置第三个参数为“未找到”,由于“未找到”这三个字是字符串,所以要用英文引号把“未找到”三个字引起来,代表如果没有找到符合第二个参数所设置条件对应的内容,则在单元格中显示“未找到”。如下图所示。

案例(2):筛选出多列信息。如下图所示,需要筛选出G2单元格中给定部门的所有人员的姓名、年龄和性别信息。

与案例(1)相比,此时的不同之处在于需要查找出的结果不只是一列数据,而是多列数据,因此,只需要将案例(1)中的第一个参数由C:C更改为C:E,代表C列至E列数据。即:
=FILTER(C:E,B:B=G2,"未找到")
如下图所示:

案例(3):多条件筛选。如下图所示,需要筛选出部门为G2、年龄为H2、性别为I2单元格中内容的人员。

此时,筛选的条件有3个,因此在FILTER函数的第二个参数中需要用英文状态下的括号将各个条件括起来,同时在括号之间添加一个星号(*)将各个条件连起来,最终函数写成:
=FILTER(C:C,(B:B=G2)*(D:D=H2)*(E:E=I2),"未找到")
如下图所示。

03 其他
以上内容为FILTER函数的语法及其基础应用示例,如需本文练习素材可在公众号中下载。