filter函数如何添加多个条件(还在手动筛选数据)

filter函数如何添加多个条件(还在手动筛选数据)(1)

有些业务需要经常手动筛选指定条件数据,虽然操作上不是很繁琐,但就是小操作,很容易让你熬夜加班。

filter函数如何添加多个条件(还在手动筛选数据)(2)

在Microsoft 365和WPS最新版中,上线了Filter这个动态筛选函数。

函数作用就是,根据指定条件,对目标数据进行筛选,将最终的筛选结果直接展现出来。

「所以好处是什么?」 如果使用filter函数,你只需要一次创建好函数模板,后期更新数据库,就能自动完成所有筛选操作。

filter函数如何添加多个条件(还在手动筛选数据)(3)

「那么如何使用函数公式有条件的动态筛选数据?」

本期用「filter函数」「if函数」分别实现下面的筛选需求。

  1. 单条件筛选

  2. 多条件同时满足或只满足任意条件

  3. 要么同时满足某些条件,要么符合指定条件

点赞收藏,根据你的需要选择合适的方法。

1. Filter函数怎么用?

函数参数如下:

=FILTER(array,include,[if_empty])

filter函数如何添加多个条件(还在手动筛选数据)(4)

图片来自office支持

Microsoft 365,Excel 2021以及WPS最新版支持该函数

第一个参数是待筛选的数据区域或者数组,第二个是一个一维布尔值数组,这个待会详细介绍,第三个是当没有符合条件数据时返回的值。

以这张信息表为例:

filter函数如何添加多个条件(还在手动筛选数据)(5)

我们需要筛选提取所有性别为「男」的数据,使用公式如下:

=FILTER(A2:C8,B2:B8="男")

filter函数如何添加多个条件(还在手动筛选数据)(6)

可以注意到,函数第二个参数使用了B2:B8="男"这样的条件式,这个条件式的结果是这样的:

filter函数如何添加多个条件(还在手动筛选数据)(7)

符合条件的,返回结果True,不符合则是False。由此构成了一组一维的布尔值数组。

这个数组有以下几个条件:

  1. 数组必须是单行或者是单列的一维数组;

如果要筛选行,则是单列数组,筛选列则是单行数组。

  1. 数组大小必须与待筛选的数组大小保持一致。

例如待筛选数组要筛选行,则布尔值数组只能是单列且行数与待筛选数组行数一致的一维数组。

  1. 数组内容必须是布尔值,也就是True或者False(1,0等数字也可以)

由此,使用filter函数的关键,就是如何生成符合条件的布尔值数组,也就是如何输入条件。

下文提供常见的filter函数筛选条件案例,可参照学习。

1.1 filter单条件

按行筛选出年龄大于60的数据。

=FILTER(A2:C8,C2:C8>60)

filter函数如何添加多个条件(还在手动筛选数据)(8)


按列筛选出姓名和年龄。

=FILTER(A2:C8,{1,0,1})

filter函数如何添加多个条件(还在手动筛选数据)(9)

条件式中的{1,0,1}就是一组单行的布尔值数组,分别对应姓名、性别和年龄,其中大于等于1则提取保留,等于0则剔除,此处直接写了条件式结果。

1.2 filter同时满足多个条件

按行筛选性别女且年龄大于50的数据。

=FILTER(A2:C8,(B2:B8="女")*(C2:C8>50))

filter函数如何添加多个条件(还在手动筛选数据)(10)

注意多个条件同时满足情况下,使用 * 将多个条件相乘,此处不适用and函数,是由于and函数的最终结果是唯一值,不是数组。

把条件写在单元格内,最终结果如下图所示。只有全部满足,结果才为1。

filter函数如何添加多个条件(还在手动筛选数据)(11)


1.3 filter满足多个条件中的任意一个条件

按行筛选性别女或年龄大于50的数据。

=FILTER(A2:C8,(B2:B8="女") (C2:C8>50))

filter函数如何添加多个条件(还在手动筛选数据)(12)

与同时满足条件相比,唯一的区别就是多个条件之间使用 相加,此时,只需有一个满足,那么结果至少会大于1。

1.4 filter同时满足两个条件或满足其他任意一个条件

按行筛选年龄小于等于60且性别为女,或者年龄小于30的数据

=FILTER(A2:C8,((B2:B8="女")*(C2:C8<=60)) (C2:C8<=30))

filter函数如何添加多个条件(还在手动筛选数据)(13)

存在较为复杂的条件时,直接使用括号将对应条件合并成另一个新条件,再进行运算。

例如需求中的第一个且条件里的多个条件相乘,然后合并在一起与另一个条件相加做或条件。

2. 使用普通if函数代替实现filter函数效果

如果软件版本没有filter,也想实现类似的效果,可以使用if函数搭配数组公式实现。

当然,不支持动态数组的软件版本,还是要按照原本的数组公式录入方法进行使用。

数组公式使用方法

  1. 需提前选中承接数组公式结果的单元格区域

  2. 再输入数组公式

  3. 最后需要按数组确认键 CTRL SHIFT 回车 确认公式

具体使用,可以参考下方案例直接套用公式:

2.1 单条件筛选

=SORT(IF(B2:B8="男",A2:C8,""),,-1)

filter函数如何添加多个条件(还在手动筛选数据)(14)

由于单独使用if筛选,会导致不符合条件的数据变成空值,且留在原有的位置,因此使用sort函数,将其按倒序排序,使其符合条件的值保留在上方。

不好的点在于最终会对结果数据进行排序,如果要不进行排序操作,直接剔除空值数据的做法会很复杂,不建议使用。

2.2 多条件筛选

同时满足情况下用*链接所有条件,或条件情况下用 链接。这与filter的多条件用法保持一致。

=SORT(IF((B2:B8="男")*(C2:C8>60),A2:C8,""),,-1)

filter函数如何添加多个条件(还在手动筛选数据)(15)


if函数筛选的其余情况基本与filter函数的使用条件一致,灵活创建条件式生成的布尔值,可以实现不同的效果。

比如在之前发布的unique函数文章中(可看主页文章列表),我们就利用了match函数与row函数定位了不重复数据的位置。

由此,你也可以生成对应的布尔值数组,可以用来给if函数,直接返回所有的不重复数据,感兴趣的同学,欢迎评论留言。


,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页