在Excel中查找数据,一条公式就能筛选出包含或不包含某值的结果

Excel学习世界 2023-11-30 22:06:40

筛选出包含关键字的结果,已经不容易,若要筛选出不包含关键字的结果,难度更甚。而这些竟然都能通过一条公式实现?

案例:

下图 1 是每个人购买的菜品流水表,其中人和菜都重复出现过。请分别按以下要求查找出不同的结果:

查找出购买的菜品包含“鱼”关键字的所有人

查找出购买的菜品不包含“菜”字的所有人,且去重

效果如下图 2 所示。

解决方案:

匹配出菜品包含“鱼”的所有人。

1. 在 E2 单元格中输入以下公式 --> 回车:

=FILTER(A2:A21,ISNUMBER(FIND(D2,B2:B21)))

公式释义:

FIND(D2,B2:B21):在区域 B2:B21 中查找 D2 单元格的内容,如果找到,返回“鱼”字在 B 列单元格的文本中的位置,结果为一个数值;找不到则返回错误值;

ISNUMBER(...):判断上述公式结果是否为数值,结果为 true 或 false 组成的逻辑值;

FILTER(...):

FILTER 函数的作用是基于布尔值 (True/False) 数组筛选数组;

语法为 FILTER(要筛选的数组或区域,要基于此筛选的布尔值,[筛选结果为空时返回的值])

本案例的公式表示基于 isnumber 返回的布尔值在 A 列中筛选出符合条件的姓名

2. 在 B 列中手工筛选出所有包含“鱼”的结果核对一下,公式结果正确。

匹配出菜品不包含“菜”的所有人。

3.  在 H2 单元格中输入以下公式:

=FILTER(A2:A21,ISERROR(FIND(G2,B2:B21)))

公式释义:

与上一个查询公式唯一不同的是将 isnumber 函数换成了 ISERROR,也就是返回的逻辑值数组中,find 公式结果为错误值的对应 true,除此之外都是 false

4. 在 B 列手工筛选出结果进行核对,公式依然正确。

5. 到了现在,如果需要在 H 列的结果中仅保留姓名唯一值,只需要在整个公式外面套个 unique 函数就可以了。

=UNIQUE(FILTER(A2:A21,ISERROR(FIND(G2,B2:B21))))

0 阅读:77

Excel学习世界

简介:Excel 学习交流