有些业务需要经常手动筛选指定条件数据,虽然操作上不是很繁琐,但就是小操作,很容易让你熬夜加班。
在Microsoft 365和WPS最新版中,上线了Filter这个动态筛选函数。
函数作用就是,根据指定条件,对目标数据进行筛选,将最终的筛选结果直接展现出来。
「所以好处是什么?」
「那么如何使用函数公式有条件的动态筛选数据?」
「filter函数」「if函数」
单条件筛选 多条件同时满足或只满足任意条件 要么同时满足某些条件,要么符合指定条件
点赞收藏,根据你的需要选择合适的方法。
1. Filter函数怎么用?
函数参数如下:
=FILTER(array,include,[if_empty])
Microsoft 365,Excel 2021以及WPS最新版支持该函数
第一个参数是待筛选的数据区域或者数组,第二个是一个一维布尔值数组,这个待会详细介绍,第三个是当没有符合条件数据时返回的值。
以这张信息表为例:
「男」
"男"
B2:B8="男"
符合条件的,返回结果True,不符合则是False。由此构成了一组一维的布尔值数组。
这个数组有以下几个条件:
数组必须是单行或者是单列的一维数组;
如果要筛选行,则是单列数组,筛选列则是单行数组。
数组大小必须与待筛选的数组大小保持一致。
例如待筛选数组要筛选行,则布尔值数组只能是单列且行数与待筛选数组行数一致的一维数组。
数组内容必须是布尔值,也就是True或者False(1,0等数字也可以)
由此,使用filter函数的关键,就是如何生成符合条件的布尔值数组,也就是如何输入条件。
下文提供常见的filter函数筛选条件案例,可参照学习。
1.1 filter单条件
按行筛选出年龄大于60的数据。
=FILTER(A2:C8,C2:C8>60)
按列筛选出姓名和年龄。
=FILTER(A2:C8,{1,0,1})
条件式中的{1,0,1}就是一组单行的布尔值数组,分别对应姓名、性别和年龄,其中大于等于1则提取保留,等于0则剔除,此处直接写了条件式结果。
1.2 filter同时满足多个条件
按行筛选性别女且年龄大于50的数据。
"女"
*
1.3 filter满足多个条件中的任意一个条件
按行筛选性别女或年龄大于50的数据。
"女"
+
1.4 filter同时满足两个条件或满足其他任意一个条件
按行筛选年龄小于等于60且性别为女,或者年龄小于30的数据
"女"
存在较为复杂的条件时,直接使用括号将对应条件合并成另一个新条件,再进行运算。
例如需求中的第一个且条件里的多个条件相乘,然后合并在一起与另一个条件相加做或条件。
2. 使用普通if函数代替实现filter函数效果
如果软件版本没有filter,也想实现类似的效果,可以使用if函数搭配数组公式实现。
当然,不支持动态数组的软件版本,还是要按照原本的数组公式录入方法进行使用。
数组公式使用方法
需提前选中承接数组公式结果的单元格区域 再输入数组公式 最后需要按数组确认键 CTRL+SHIFT+回车 确认公式
具体使用,可以参考下方案例直接套用公式:
2.1 单条件筛选
"男"""
由于单独使用if筛选,会导致不符合条件的数据变成空值,且留在原有的位置,因此使用sort函数,将其按倒序排序,使其符合条件的值保留在上方。
不好的点在于最终会对结果数据进行排序,如果要不进行排序操作,直接剔除空值数据的做法会很复杂,不建议使用。
2.2 多条件筛选
*+
"男"""
if函数筛选的其余情况基本与filter函数的使用条件一致,灵活创建条件式生成的布尔值,可以实现不同的效果。
比如在之前发布的unique函数文章中(可看主页文章列表),我们就利用了match函数与row函数定位了不重复数据的位置。
由此,你也可以生成对应的布尔值数组,可以用来给if函数,直接返回所有的不重复数据,感兴趣的同学,欢迎评论留言。