前面给大家讲解了使用index+small+row+if几个函数一起协作,来实现自动查询符合条件的所有结果。今天继续给大家介绍一个新函数,这个函数可以把之前很长的函数代码简化到很简单。但这个函数是2018年发布的,只在OFFICE 2019版本 或者 OFFICE 365版本中才有。

我们还是以上图这个示例为例,来演示filter函数。我们的目标依然是查找丁老师指导的其他学生的信息。我们这次以姓名为例来试试。整理条件为:查找指导老师为丁老师,且姓名不为聪玲的所有其他学生姓名
首先先介绍一下Filter函数,Filter函数接收3个参数:
第一个是数组,代表要查找的区域,
第二个是条件,用于在数据进行查找的条件,
第三个是可选参数,指定查找不到时的替代值。

根据filter的语法,我们要查找其他学生的姓名,可以直接把公式改写为:
=FILTER('2 查询数据'!C:C,('2 查询数据'!H:H='2 查询结果'!$F$7)*('2 查询数据'!C:C<>'2 查询结果'!$A$7))
结果如下图所示,在绿色区域旁边,也成功查出了其他学生的姓名。

我们对比下,会发现,现在这个函数,比之前的简洁很多,好理解很多。
=FILTER('2 查询数据'!C:C,('2 查询数据'!H:H='2 查询结果'!$F$7)*('2 查询数据'!C:C<>'2 查询结果'!$A$7))
附原处理公式:
=IFERROR(INDEX('2 查询数据'!C:C, SMALL(IF(('2 查询数据'!H:H='2 查询结果'!$F$7)*('2 查询数据'!C:C<>'2 查询结果'!$A$7), ROW('2 查询数据'!C:C)-ROW('2 查询数据'!C$1)+1), ROW(1:1))),"")
注意:
1. 在这个函数中,我们使用('2 查询数据'!H:H='2 查询结果'!$F$7)*('2 查询数据'!C:C<>'2 查询结果'!$A$7)这种写法,是利用乘法规则,将两个条件同时满足的场景合并在一起。
2. 我们也忽略了第三个可选参数。
3. 如果你的Excel版本低于OFFICE 2019,这个函数是不生效的,如果你要在这样的环境下处理这个问题,可以参考我之前写的文章。