2025年数组方法find(数组方法filter)

数组方法find(数组方法filter)有些业务需要经常手动筛选指定条件数据 虽然操作上不是很繁琐 但就是小操作 很容易让你熬夜加班 在 Microsoft 365 和 WPS 最新版中 上线了 Filter 这个动态筛选函数 函数作用就是 根据指定条件 对目标数据进行筛选 将最终的筛选结果直接展现出来 所以好处是什么 如果使用 filter 函数 你只需要一次创建好函数模板 后期更新数据库 就能自动完成所有筛选操作

大家好,我是讯享网,很高兴认识大家。



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

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

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

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

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

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

  1. 单条件筛选
  2. 多条件同时满足或只满足任意条件
  3. 要么同时满足某些条件,要么符合指定条件

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

函数参数如下:

=FILTER(array,include,[if_empty])

图片来自office支持

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

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

以这张信息表为例:

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

=FILTER(A2:C8,B2:B8=“男”)

讯享网

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

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

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

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

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

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

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

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

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

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


讯享网

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

讯享网=FILTER(A2:C8,C2:C8>60)

按列筛选出姓名和年龄。

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

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

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

讯享网=FILTER(A2:C8,(B2:B8=“女”)(C2:C8>50))

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

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

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

=FILTER(A2:C8,(B2:B8=“女”)+(C2:C8>50))

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

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

讯享网=FILTER(A2:C8,((B2:B8=“女”)(C2:C8<=60))+(C2:C8<=30))

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

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

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

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

数组公式使用方法

  1. 需提前选中承接数组公式结果的单元格区域
  2. 再输入数组公式
  3. 最后需要按数组确认键 CTRL+SHIFT+回车 确认公式

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

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

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

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

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

讯享网=SORT(IF((B2:B8=“男”)*(C2:C8>60),A2:C8,“”),,-1)

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

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

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


小讯
上一篇 2025-05-03 16:27
下一篇 2025-05-15 19:05

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/178942.html