ARTICLE · 1027200
Excel筛选还在用手拖?这个函数3秒搞定
前两天有个做行政的读者私信我,说每个月整理库存表都要花大半天,光是筛选品牌、挑出库存不足的商品,就得反复点鼠标点到手酸。
我问她:你用过FILTER吗?
她回了个问号。
其实像她这样的情况真不少。很多人一提到Excel筛选,第一反应就是"数据"选项卡里的那个漏斗图标,点一下、选一下、再复制粘贴出来。数据少还好,数据一多,光等它响应就够泡杯茶了。
今天要聊的FILTER函数,就是专门来治这种"筛选效率癌"的。它能在Excel 2021和最新版WPS里直接用,写一个公式,结果自动 spill 出来,根本不用拖拽填充。
先把它的基本语法亮出来,混个眼熟:
=FILTER(要返回的内容区域, 筛选条件, [找不到结果时显示啥])第三个参数可以省略,但建议养成写的习惯,后面会说到为什么。
下面直接上场景,看看它到底能省多少事。
场景一:一个条件,把符合条件的全拎出来
假设你手头有一张商品表,A列是商品名,B列是品牌。现在老板说:把"松下"的所有商品给我列出来。
先把下面这张表复制到Excel的A1单元格开始的位置:
数据从A1到B13,一共12行商品。
以前你可能要筛选、复制、粘贴,三步走。现在只要在空白单元格里敲:
=FILTER(A2:A13, B2:B13="松下")回车。A列里所有松下的商品名,自动往下排开,有几个出几个,不用你管行数。

这里的关键是第二个参数——B2:B13="松下",它会对每个单元格做判断,是松下的返回TRUE,不是的返回FALSE。FILTER拿到这串TRUE/FALSE,就把TRUE对应位置的A列内容统统吐出来。
说白了,FILTER就是拿着条件当筛子,把符合的整行记录给你捞出来。
场景二:两个条件同时满足,也不在话下
老板又说了:松下这个品牌里,库存大于20的才要。
还是用上面那张表,但这次要加上库存列。把下面这张表复制到Excel的A1单元格开始的位置:
数据从A1到C13。
这时候就要上"与"逻辑了。公式改成:
=FILTER(A2:A13, (B2:B13="松下")*(C2:C13>20))
注意中间那个乘号。两个条件括号括起来,用*连接,表示"并且"。为什么用乘号?因为TRUE乘TRUE等于1,TRUE乘FALSE等于0,Excel里非零即真,乘完之后还是1的地方,就是两个条件都满足的行。
这招在FILTER里特别常用,多条件筛选就用乘号连,记不住的话就想:都要满足,缺一不可,乘起来。
场景三:只要包含某个词,就给我揪出来
有时候条件没那么精确。比如商品名里只要带"音响"两个字,不管前面后面是啥,都要。
把下面这张表复制到Excel的A1单元格开始的位置:
数据从A1到B13。
这时候等于号就不管用了,得请出FIND和ISNUMBER这对老搭档:
=FILTER(A2:A13, ISNUMBER(FIND("音响", A2:A13)))
FIND负责在每个单元格里找"音响"的位置,找到就返回数字,找不到就报错。ISNUMBER再把数字变成TRUE,错误值变成FALSE。最后FILTER拿着这串TRUE/FALSE去捞人。
这个组合技在关键词模糊匹配里特别好使,比通配符还灵活,因为你可以把"音响"换成单元格引用,做成动态查询。
场景四:两张表对着看,谁没卖出去一目了然
这个场景是我个人觉得最实用的。
把下面这两张表复制到Excel,A列是全部商品清单,C列是已经卖出去的商品:
A2:A13是全部商品,C2:C5是已售商品(只有4个卖出去了)。
现在要找出哪些还没卖。
公式长这样:
=FILTER(A2:A13, COUNTIF(C2:C5, A2:A13)=0)
思路很巧妙:用COUNTIF去数A列每个商品在C列里出现过几次。出现过就是1,没出现过就是0。然后判断这个计数等不等于0,等于0的就是没卖出去的,FILTER把它捞出来。
这招的本质是"反向筛选"——不是直接筛A列,而是借COUNTIF当裁判,告诉FILTER哪些该留。学会这个思路,很多"找出没有出现的项"的问题都能套。
最后说两句实在的
FILTER这个函数,刚上手可能觉得参数有点绕,但用顺了真的回不去。它的核心就一句话:你给我条件,我帮你把符合条件的行整行端出来。
几个小提醒:
第三个参数建议写上,比如 "无记录",免得筛选结果为空时显示一堆错误值,看着糟心。结果区域要留够空白,不然会报 #SPILL!错误,意思是"我想溢出来但被挡住了"。多条件用 *连接表示"且",用+连接表示"或",别搞混。
今天就聊到这。如果你手头正好有需要反复筛选的表格,不妨打开Excel试一下FILTER,回来告诉我省了多少时间。
毕竟,能用一个公式解决的事,真没必要点鼠标点到手抽筋。