ARTICLE · 994362
Excel的FILTER函数:7个最常用示例
FILTER就是 “按条件筛选” ,把符合条件的所有行一起拎出来。跟VLOOKUP或XLOOKUP不一样的是,那俩只找一个,FILTER一口气把符合条件的全列出来。
公式只有3个参数:
=FILTER(要返回哪一列或哪几列, 筛选条件, [如果查不到就显示这个])
前两个必须填,第三个可写可不写。
示例1:最基础的筛选(找出所有女员工)
场景:人事表里,要把所有性别为“女”的员工全部列出来。
数据表(A1:D6) :
| 工号 | 姓名 | 性别 | 部门 |
|---|---|---|---|
| A001 | 陈晓峰 | 男 | 销售部 |
| A002 | 林雨桐 | 女 | 财务部 |
| A003 | 王浩 | 男 | 市场部 |
| A004 | 周敏 | 女 | 人事部 |
| A005 | 郑欣 | 女 | 销售部 |
筛选结果(F1:I3) :
| 工号 | 姓名 | 性别 | 部门 |
|---|---|---|---|
| A002 | 林雨桐 | 女 | 财务部 |
| A004 | 周敏 | 女 | 人事部 |
| A005 | 郑欣 | 女 | 销售部 |
公式(F1单元格,自动溢出) :
=FILTER(A2:D6,C2:C6="女")
参数解释:
第一参数 A2:D6 → 把整张表都返回
第二参数 C2:C6="女" → 筛选条件是性别这一列等于“女”
用在哪:从花名册里筛出所有女生、所有销售部员工、所有90后等等。

示例2:只返回某几列(不返回整行)
场景:还是筛女员工,但只显示“姓名”和“部门”,工号不看了。
数据表(A1:D6) :
| 工号 | 姓名 | 性别 | 部门 |
|---|---|---|---|
| A001 | 陈晓峰 | 男 | 销售部 |
| A002 | 林雨桐 | 女 | 财务部 |
| A003 | 王浩 | 男 | 市场部 |
| A004 | 周敏 | 女 | 人事部 |
| A005 | 郑欣 | 女 | 销售部 |
筛选结果(F1:G3) :
| 姓名 | 部门 |
|---|---|
| 林雨桐 | 财务部 |
| 周敏 | 人事部 |
| 郑欣 | 销售部 |
公式(F1单元格,自动溢出) :
=FILTER(B2:D6,C2:C6="女")
参数解释:
第一参数换成 B2:D6 → 只返回姓名、性别、部门三列(你想再少就只选B列和D列,中间隔开也是可以的,比如选B2:B6和D2:D6要用数组写法,但初学者直接选连续区域最省事)

用在哪:只要部分字段的报表,比如只看姓名和联系方式,不看身份证号。
示例3:查不到时显示提示(不报错)
场景:筛选条件一个都没命中,别显示#CALC!,显示“没有找到符合条件的记录”。
数据表(A1:D6) :
| 工号 | 姓名 | 性别 | 部门 |
|---|---|---|---|
| A001 | 陈晓峰 | 男 | 销售部 |
| A002 | 林雨桐 | 女 | 财务部 |
| A003 | 王浩 | 男 | 市场部 |
| A004 | 周敏 | 女 | 人事部 |
| A005 | 郑欣 | 女 | 销售部 |
筛选结果(F1单元格) :
| 结果 |
|---|
| 没有找到符合条件的记录 |
公式(F1单元格) :
=FILTER(A2:D6,C2:C6="实习生","没有找到符合条件的记录")
参数解释:
第三参数就是“查不到时显示的内容”
用在哪:做数据看板时,用户筛了个空条件,得给个友好提示,不能直接甩一个错误值。
示例4:两个条件同时满足(AND)
场景:找出所有“女”员工且部门是“销售部”的。
数据表(A1:D6) :
| 工号 | 姓名 | 性别 | 部门 |
|---|---|---|---|
| A001 | 陈晓峰 | 男 | 销售部 |
| A002 | 林雨桐 | 女 | 财务部 |
| A003 | 王浩 | 男 | 市场部 |
| A004 | 周敏 | 女 | 人事部 |
| A005 | 郑欣 | 女 | 销售部 |
筛选结果(F1:I2) :
| 工号 | 姓名 | 性别 | 部门 |
|---|---|---|---|
| A005 | 郑欣 | 女 | 销售部 |
公式(F1单元格,自动溢出) :
=FILTER(A2:D6,(C2:C6="女")*(D2:D6="销售部"))
参数解释:
*号表示“且”的关系。两个条件都成立,才筛出来注意每个条件都加了括号,这是好习惯,不容易错
用在哪:找“销售部+女”员工、找“北京+已发货”的订单、找“2025年以后+金额大于10万”的合同。记住一个口诀:AND用乘号(*)。
示例5:两个条件满足其中一个就行(OR)
场景:找出所有“女”员工 或者 部门是“销售部”的人(满足任一条就列出来)。
数据表(A1:D6) :
| 工号 | 姓名 | 性别 | 部门 |
|---|---|---|---|
| A001 | 陈晓峰 | 男 | 销售部 |
| A002 | 林雨桐 | 女 | 财务部 |
| A003 | 王浩 | 男 | 市场部 |
| A004 | 周敏 | 女 | 人事部 |
| A005 | 郑欣 | 女 | 销售部 |
筛选结果(F1:I4) :
| 工号 | 姓名 | 性别 | 部门 |
|---|---|---|---|
| A001 | 陈晓峰 | 男 | 销售部 |
| A002 | 林雨桐 | 女 | 财务部 |
| A004 | 周敏 | 女 | 人事部 |
| A005 | 郑欣 | 女 | 销售部 |
公式(F1单元格,自动溢出) :
=FILTER(A2:D6,(C2:C6="女")+(D2:D6="销售部"))
参数解释:
+号表示“或”的关系。两个条件只要有一个满足就筛出来陈晓峰虽然是男,但部门是销售部,所以也被筛出来了
用在哪:找出“已超期”或“金额大于10万”的订单、找出“请假”或“出差”的员工。OR用加号(+)。
示例6:筛选大于某个数值(比大小)
场景:销售表中,找出业绩超过10万的所有人。
数据表(A1:C6) :
| 销售员 | 月份 | 业绩 |
|---|---|---|
| 陈晓峰 | 7月 | 85000 |
| 林雨桐 | 7月 | 120000 |
| 王浩 | 7月 | 68000 |
| 周敏 | 7月 | 150000 |
| 郑欣 | 7月 | 95000 |
筛选结果(E1:G3) :
| 销售员 | 月份 | 业绩 |
|---|---|---|
| 林雨桐 | 7月 | 120000 |
| 周敏 | 7月 | 150000 |
公式(E1单元格,自动溢出) :
=FILTER(A2:C6,C2:C6>100000)
参数解释:
第二参数直接写
C2:C6>100000,跟IF的比大小写法一样
用在哪:找出业绩达标的人、找出低于安全库存的物料、找出超预算的费用。
示例7:包含某个关键词的筛选(通配符效果)
场景:筛选出姓名里包含“敏”字的所有员工。
数据表(A1:D6) :
| 工号 | 姓名 | 性别 | 部门 |
|---|---|---|---|
| A001 | 陈晓峰 | 男 | 销售部 |
| A002 | 林雨桐 | 女 | 财务部 |
| A003 | 王浩 | 男 | 市场部 |
| A004 | 周敏 | 女 | 人事部 |
| A005 | 郑欣 | 女 | 销售部 |
筛选结果(F1:I2) :
| 工号 | 姓名 | 性别 | 部门 |
|---|---|---|---|
| A004 | 周敏 | 女 | 人事部 |
公式(F1单元格,自动溢出) :
=FILTER(A2:D6,ISNUMBER(FIND("敏",B2:B6)))

参数解释:
FIND("敏",B2:B6)→ 在姓名列里找“敏”字,找到就返回一个数字,找不到就返回错误ISNUMBER(...)→ 判断上面返回的是不是数字,是数字就说明找到了,筛选条件成立这一串组合起来就是“只要姓名里包含‘敏’字,就筛出来”
总结
FILTER就三个参数:返回什么、条件是什么、查不到怎么办。条件这块,等于直接写,两个都成立用乘号,任选一个用加号,包含关键词套ISNUMBER+FIND