专业编程基础技术教程

网站首页 > 基础教程 正文

鸟枪换大炮,Excel查找的另一个函数——Filter函数

ccvgpt 2024-10-18 04:55:51 基础教程 9 ℃

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

我们还是以上图这个示例为例,来演示filter函数。我们的目标依然是查找丁老师指导的其他学生的信息。我们这次以姓名为例来试试。整理条件为:查找指导老师为丁老师,且姓名不为聪玲的所有其他学生姓名

鸟枪换大炮,Excel查找的另一个函数——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,这个函数是不生效的,如果你要在这样的环境下处理这个问题,可以参考我之前写的文章。

最近发表
标签列表