乐于分享
好东西不私藏

Excel的FILTER函数,就是vlookup的究极进化版

Excel的FILTER函数,就是vlookup的究极进化版
各位,今天咱们来聊一个Excel函数里的"老黄牛"——

VLOOKUP

这玩意儿,职场人用了二十年。

查数据、匹配信息、跨表汇总——

只要你跟Excel打过交道,VLOOKUP你肯定用过,或者被它折磨过。

但我今天要告诉你一个事实:

VLOOKUP的那个时代,该结束了。

不是它不好用,是有个比它强一百倍的东西出现了。

这个新东西叫FILTER。

先说VLOOKUP的鬼故事

你有没有过这种经历——

两张表,你需要把B表的数据匹配到A表去。

你的第一反应:VLOOKUP伺候。

=VLOOKUP(A2, B:D, 3, FALSE)

然后开始数列——B是第1列、C是第2列、D是第3列……

等等,D是第几列来着?

算了,数一遍。

好,公式填好了,往下一拉——

#N/A。

有匹配不到的。

你开始排查:空格问题?格式不统一?表格太乱?

折腾半小时,终于找到原因——原来A列有个单元格多了个空格。

你去掉空格,再拉——

还是有#N/A。

换个思路,又是半小时。

这就是VLOOKUP的日常:一个简单需求,折腾你一上午。


VLOOKUP的四大原罪

原罪一:只能从左往右查

VLOOKUP只能查找第一列,然后返回右侧的列。

你想返回左侧的数据?

对不起,做不到。

得用INDEX+MATCH组合,公式长到能绕地球三圈。

原罪二:列序号得手动数

=VLOOKUP(查找值, 区域, 3, FALSE)

这个"3"你得自己数。

多了一列少了一列,你根本不知道。

数错了就报错,错了就重来。

原罪三:匹配不到就炸给你看

找不到就 #N/A,你得在外面再套一层 IFERROR

=IFERROR(VLOOKUP(...), "找不到")

一个简单匹配,公式写三行。

原罪四:只能返回一个结果

VLOOKUP返回的是单个值。

你想筛选出符合条件的所有行

做梦!

你得一个个查,或者用其他方法折腾。


所以FILTER来了

一句话定义FILTER:

你设条件,它自动给你筛选出所有符合条件的结果。

语法长这样:

=FILTER(要返回的区域, 条件, [找不到时显示什么])

就这么简单。

没有列序号,没有从左到右的限制,没有只能返回一个值的烦恼。


FILTER vs VLOOKUP:碾压局

对比1:基本查找

VLOOKUP:

=VLOOKUP(A2, B:D, 3, FALSE)

得数第几列,烦不烦?

FILTER:

=FILTER(C:C, A:A=E2)

直接说"从C列里找A列等于E2的"。

简洁明了,不需要数列。

对比2:找不到怎么办

VLOOKUP:

=IFERROR(VLOOKUP(A2, B:D, 3, FALSE), "找不到")

套三层。

FILTER:

=FILTER(C:C, A:A=E2, "找不到")

第三个参数直接写。

对比3:返回左侧数据

VLOOKUP: 想都别想

FILTER:

=FILTER(A:A, C:C=E2)

从A列返回C列等于E2的——支持返回左侧数据,随便返。

对比4:返回多个结果

VLOOKUP: 只能返回一个值

FILTER:

=FILTER(A:C, B:B="华东")

返回所有华东区的行,有多少返多少,一口气全给你。


实战演示:两张表搞定跨表匹配

场景

A表:员工信息表(工号、姓名、部门)

工号
姓名
部门
A001
张三
华东
A002
李四
华南
A003
王五
华东

B表:销售业绩表(工号、销售额)

工号
销售额
A001
15000
A002
8000
A003
12000

需求:在A表后面加一列"销售额"

传统VLOOKUP写法

=VLOOKUP(A2, B!A:B, 2, FALSE)

得记住B表的列顺序,还得数第几列。

FILTER写法

=FILTER(B!B:B, B!A:A=A2, "无销售额")

直接说:B表里,工号等于A002的那一行,B列是多少。

人话就是人话,不需要翻译成"第2列、第3列"。


多条件匹配:FILTER的真正威力

这是VLOOKUP的禁区,但FILTER轻松搞定。

场景

员工绩效表:

姓名
部门
月份
绩效得分
张三
华东
1月
85
李四
华南
1月
92
王五
华东
2月
78
赵六
华北
1月
88

需求:找出"华东区"+"1月"的所有员工绩效

VLOOKUP: 做梦

FILTER:

=FILTER(A2:D5, (B2:B5="华东")*(C2:C5="1月"))

两个条件相乘,就是"同时满足"的意思。

结果:

姓名
部门
月份
绩效得分
张三
华东
1月
85

你想要的所有结果,一行公式,全给你筛出来。


FILTER的三大骚操作

骚操作1:跨表筛选

=FILTER(另一张表!A:D, 另一张表!D:D>10000, "无")

不用复制粘贴,直接跨表筛选。

骚操作2:筛选后排序

=SORT(FILTER(A:C, B:B="华东"), 3, -1)

筛选华东区,然后按第3列(绩效)降序排列。

一个公式,筛选+排序全搞定。

骚操作3:筛选后求和

=SUM(FILTER(C:C, B:B="华东"))

筛选出华东区的销售额,直接求和。

不用先筛选、复制、再求和。一步到位。


总结:FILTER凭什么叫究极进化?

功能
VLOOKUP
FILTER
基本查找
返回左侧数据
找不到时不报错
得套IFERROR
原生支持
返回多行结果
多条件匹配
得嵌套
直接乘
跨表筛选
勉强
原生支持
筛选+其他操作
分步做
一个公式

VLOOKUP能做的,FILTER都能做。VLOOKUP做不了的,FILTER也能做。

这就是为什么我说——VLOOKUP的时代该结束了。

不是因为它不好,是因为有更好的了。


新手常见问题

Q1:为什么我输入FILTER报错?

FILTER是Excel 365和Excel 2021的新功能。低版本没有这个函数。

Q2:FILTER返回的是一片数据,怎么删?

这是"溢出区域",不要手动删,选中左上角单元格,按Delete即可。

Q3:VLOOKUP还要学吗?

要学。老文件里到处都是,而且有些简单场景VLOOKUP更直接。

但FILTER是升级方向,能用FILTER的场景优先用FILTER。


好了,今天就到这里。

总结一句话:能用FILTER,就别再死磕VLOOKUP了。