网站首页 > 基础教程 正文
当我们谈论Excel中的FILTER函数,我们实际上是在讨论一个强大的筛选工具。即使你可能不熟悉FILTER函数的名称,你一定已经使用过Excel的筛选功能。FILTER函数正是这一功能的自动化版本,它能够模拟手动筛选的过程,但更加高效和灵活。接下来,我们将深入探讨FILTER函数的使用方法。
FILTER函数属于Excel中的查找和引用函数类别,它在Microsoft 365的最新版本中得到了支持。此外,值得一提的是,国产办公软件WPS Office也提供了对FILTER函数的支持。这使得无论用户使用的是哪个平台,都能够利用这一功能来提升工作效率。
一、参数介绍
功能:FILTER 函数可以基于定义的条件筛选一系列数据。
参数:=FILTER(数组,包括,[ if_empty ])
一参:要筛选的数组区域
二参:布尔值的数组
三参:所有数组中的所有值都为空时要返回的值
二、效果展示
FILTER函数以其独特的筛选能力脱颖而出,它能够精准地提取符合特定条件的所有数据,类似于高级筛选功能。只需在单元格中输入一个公式,FILTER便能扩展并返回所有符合条件的数据集。这一特性是Microsoft 365版本的一大亮点,它允许公式结果自动扩展以适应多条数据,而无需手动操作。相比之下,旧版本的Excel在处理多结果时,通常只能返回单个值,并且需要用户频繁使用F9键来查看计算过程。随着技术的进步,那些限制已成为历史。正如古语所云:'工欲善其事,必先利其器',选择正确的工具,如FILTER函数,是提高工作效率的关键。
三、参数详解
a.第一参数
想象一下,数组就像Excel中的一个特定区域。更具体地说,它代表了我们筛选后想要得到的最终结果区域。例如,在之前的案例中,我们选定了B3到D12的区域进行筛选,那么筛选结果也将来自这个区域。如果你想筛选出人事部的所有姓名,你不需要选择整个区域,只需选择包含姓名的列,也就是B3到B12。
对于FILTER函数的第一个参数,理解起来很简单:它定义了筛选的基础区域。但要注意,这个参数并不局限于单一的单元格或连续的单元格区域,它也可以是一个内存数组——也就是说,它可以是其他函数返回的结果数组。
b.第二参数
FILTER函数的第二参数是其核心,正确设置这个参数对于函数的成功执行至关重要。根据微软的官方文档,这个参数应该是一个布尔值数组。首先,让我们澄清什么是布尔值。在Excel中,布尔值代表逻辑判断的结果,例如,在公式栏中输入=1=2,Excel会返回布尔值FALSE,表示两个比较值不相等。
在实际应用中,我们通常使用布尔值数组来进行条件筛选。以我们之前的例子为例,第二参数设置为F3=C3:C12,这会在整个部门列上进行比较,生成一个布尔值数组。例如,F3与C3比较结果为FALSE,F3与C5比较结果为TRUE,以此类推。重要的是,这个布尔值数组的行数必须与第一参数定义的数据区域的行数一致。
此外,布尔值数组不仅可以是单列的(即一列多行),也可以是多列的(即一行多列)。例如,在图2中,我们使用标题行区域来判断是否等于"部门",形成一个横向的一维数组。在这种情况下,布尔值数组的列数必须与第一参数的列数相匹配。这些布尔值数组都是基于条件判断生成的,例如判断是否属于"人事部"或标题是否为"部门"。当然,FILTER函数也支持多个条件的组合使用,这将在稍后详细讲解。
最后,让我们理解FILTER函数的返回结果原理。在公式=FILTER(B3:D12, C3:C12=F3)中,由于布尔值数组与第一参数的行数一致,所有在布尔值数组中标记为FALSE的行将不会出现在最终结果中,而标记为TRUE的行将被保留,这些就是我们想要筛选出的结果。
c.第三参数
简单来说,如果逻辑值数组中所有的值都是FALSE,FILTER函数将无法找到匹配的条件,这时公式会显示错误。举个例子,如果我们尝试筛选一个不存在的部门,比如销售部,而筛选区域中并没有销售部的数据,那么公式就会返回一个#CALC!错误(如图4所示),在Excel中,这个错误表示没有找到任何匹配项。
为了避免这种情况,我们可以使用FILTER函数的第三参数,这是一个可选的参数,通常用得不多。如图5所示,如果我们在第三参数中输入一些文本,比如“没有销售部”,那么当没有找到匹配项时,公式就会返回这个文本,而不是显示错误值。这可以通过公式=IFERROR(FILTER(B3:D12, C3:C12=F3), "没有销售部")实现,它相当于一个错误处理机制,当FILTER函数没有找到结果时,就会显示我们指定的文本。
四、延伸
a.多条件筛选(且和或)
当我们在FILTER函数的第二参数中使用多个条件时,可以通过增加括号来实现。每个条件都放在一个单独的括号内。例如,如果我们有两个条件,就使用两个括号。在当前案例中,第一个条件是部门等于"人事部",第二个条件是薪资小于5000。如果这两个条件需要同时满足,即用(*)分隔这两个条件。如果条件是"或"的关系,则使用加号(+)来连接。
这两个逻辑符号的工作原理是什么?通过图6的示例,我们可以清楚地看到,当两个条件都为FALSE时(相当于0),它们的乘积也是0。如果两个条件都为TRUE(相当于1),乘积为1。如果只有一个条件为TRUE,乘积为0。因此,使用且的逻辑时,结果数组将是一系列的0和1,表示哪些行满足条件。
这与官方文档中提到的布尔值数组相呼应。布尔值数组在这里的作用类似于IF函数的第一参数,遵循非零值表示真(TRUE)的规则。FILTER函数会排除数组中值为0的行,只保留非零值的行,这意味着结果可以是正数(如1, 2)或负数(如-1, -2),所有这些非零值都会被筛选出来
b.筛选列标题
在实际工作中,我们经常会遇到含有多列数据的情况。如果您的目标是筛选出特定一列数据,可以使用特定的公式来实现这一点。例如,在这个案例中,我们将展示如何使用FILTER函数的第二参数来创建一个横向的一维逻辑值数组,这种情况虽然使用频率不高,但理解其逻辑至关重要。
具体来说,横向的一维逻辑值数组中的TRUE值将指示FILTER函数从第一参数指定的数据区域中筛选出对应的列。这意味着,如果逻辑值数组中的某个位置为TRUE,那么在最终的筛选结果中,该位置对应的列将被包含进来。这一点对于掌握如何使用FILTER函数进行精确筛选非常关键。
猜你喜欢
- 2024-10-18 一对多查询,Vlookup,Filter,Textjoin公式,你喜欢哪种
- 2024-10-18 Excel函数:office 365新增筛选函数FILTER的打开方式
- 2024-10-18 Excel VBA:掌握数组使用技巧,高效处理数据
- 2024-10-18 Excel中CHOOSECOLS+FILTER函数组合有妙用,新手必备!
- 2024-10-18 鸟枪换大炮,Excel查找的另一个函数——Filter函数
- 2024-10-18 Excel数组公式与自动溢出 excel数组公式与自动溢出的区别
- 2024-10-18 学习VBA,报表做到飞 第二章 数组 2.6 清空数组与嵌套数组转换
- 2024-10-18 spring boot 如何统一处理 Filter、Servlet 中的异常信息
- 2024-10-18 前端开发中操作数组最常用的16个方法
- 2024-10-18 Linux 网络层收发包流程及 Netfilter 框架浅析
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)