周一早上接到个任务:院长要一份"成年男性患者清单",下午又要"未成年人或女性患者"的随访名单。以前得用高级筛选、复制粘贴、再删删改改,一上午就没了,而现在只用了两个公式。
FILTER 函数的基本语法
=FILTER(数组,条件,
[无结果时的返回值])
三个参数,逻辑清晰:
单条件筛选:最基础的用法
从 A 列(姓名)和 B 列(年龄)中筛出成年人:
=FILTER(A:B, B:B>=18,
"无符合条件的数据")
第一个参数 A:B是要返回的完整数据区域,第二个参数 B:B>=18是筛选条件。就这么简单,结果自动溢出到下方单元格,无需手动下拉填充。
多条件筛选:且/或的逻辑
同时满足(且)
下午第一个需求:成年男性患者。假设 C 列是性别:
=FILTER(A:C, (B:B>=18)*(C:C="男"),
"无符合条件的数据")
关键点:
满足其一(或)
第二个需求:未成年人或女性患者随访:
=FILTER(A:C, (B:B<18)+(C:C="女"),
"无符合条件的数据")
这里用 +连接,表示"或"的关系。逻辑运算在 Excel 中,*是 AND,+是 OR,记住这个就通了。
只返回特定列
有时候不需要返回全部数据,只要姓名:
=FILTER(A:A, (B:B>=18)*(C:C="男"),
"无符合条件的数据")
第一个参数改成 A:A,就只返回姓名列表。
实战场景(练习):
上午 9:00院长要各科室本月复诊患者名单:
=FILTER(A:E, (F:F="复诊")*
(G:G=本月科室), "无数据")
上午 11:00随访组要联系方式,但只要有姓名和电话:
=FILTER(A:A&D:D,
H:H="需要随访", "今日无随访")
下午 3:00临时要查某个医生的患者,用单元格引用实现动态筛选:
=FILTER(A:E, D:D=K1,
"该医生无患者")
改变 K1 单元格的医生姓名,结果自动更新。这才是真正的"动态"。
下午 5:00模糊查询某类疾病患者:
=FILTER(A:E, ISNUMBER(
SEARCH("高血压", E:E)),
"无相关患者")
SEARCH支持通配符,ISNUMBER判断是否找到,组合使用实现模糊匹配。
上面的招式练完,再看看这五个必须知道的细节!
| |
|---|
| |
| 如包含标题,结果也会带标题,可用 A2:C100排除 |
| |
| |
| |
为什么说FILTER是游戏规则改变者?
以前做筛选:数据→筛选→复制→粘贴到新位置→删除筛选→完成。五步,还容易出错。
现在:一个公式,自动更新。源数据变了,结果跟着变。
下班前只需把模板保存好,以后再遇到这种需求,改个条件就可以了!好的工具不是让你加班更快,而是让你早点回家。FILTER 函数,值得每个Excel用户收藏。