完蛋!我被Vlookup包围了!

教育   教育   2023-11-28 08:44   广东  


作者:小北童鞋

来源:芒种学院(ID:lazy_info)

这两天看到不少关于 Excel 更新的新功能介绍,并且 Vlookup 又双要被退休了



虽然我承认 365 版本的确有不少函数比 Vlookup 都要好用!但是身边一统计,使用 365 的小伙伴甚至不到 1%


身边各式各样的文件,全部都被 Vlookup 包围了



是的,没错,哪怕 1985 年就已经诞生的 Vlookup 函数,至今仍然被广泛使用!而且还有各种新技巧被挖掘出来!



花了一个周末的时候,小北整理了目前 Vlookup 的 16 种技巧,应该说是全网最全的 Vlookup 技巧合集了,当然在实际应用中,其实还能挖掘出更多技巧


由于推文内容比较多,先来看下整体的大纲:



PS:练习文件在公众号「芒种学院」回复关键词「16」即可领取~


VLOOKUP基础用法


首先来看下 VLOOKUP 函数的基础用法,函数共有 4 个参数,如下:


= VLOOKUP(查找的值, 查找区域, 返回值所在列数, 匹配模式)

▲左右滑动查看完整公式


4 个参数的解释如下:


  1. 查找的值:要查找的词或单元格引用;

  2. 查找区域:包含查找字段和返回字段的单元格区域,查找字段必须在查找区域的第 1 列;

  3. 返回值所在列数:返回值在查找区域中的列数;

  4. 匹配模式:0 为精确匹配,1 为模糊匹配;


是不是非常简单?当然我们会循序渐进将这 18 种技巧全部分享完毕。


VLOOKUP单条件查询


首先是 VLOOKUP 最简单的单条件查询,案例:“根据工号将对应工资进行匹配”,操作也很简单,输入公式:


=VLOOKUP(H2,A2:F11,6,0)

▲左右滑动查看完整公式


轻松即可将工号为 6 的员工工资匹配出来。



含义也很简单:


  1. H2:要查找的单元格引用;

  2. A2:F11:查找区域;

  3. 6:工资字段位于查找区域的第 6 列;

  4. 0:精准匹配;


现在终于知道为什么有的 VLOOKUP 的第 3 个参数有的写 2 ,有的写 6 了吧~

屏蔽检索不到错误


如果数据不存在,那么 VLOOKUP 则会返回 #N/A 错误,在某些场合下,想将这些错误全部屏蔽掉,可以使用 IFERROR 函数处理。


例如使用公式,当找不到数据的时候返回 “/”:


=IFERROR(VLOOKUP(H2,A2:F11,6,0),"/")

▲左右滑动查看完整公式


当然,VLOOKUP 对数据的匹配是非常严格的,差一个空格都会认为并不是同个字符,例如 “芒种” 和 “芒种 ” 并不匹配,因为差了一个空格。



反向匹配技巧


前面提到过查找词必须在查找区域的第 1 列,如果不在第 1 列需要如何处理呢?


例如:“根据姓名查找对应的工号”,其实可以用 IF 数组公式来对调下位置即可,公式如下:


=VLOOKUP(H2,IF({1,0},B2:B11,A2:A11),2,0)

▲左右滑动查看完整公式


由于是数组公式,必须使用三键 Ctrl+Shift+Enter 结束。




这里“IF({1,0}, B2:B11, A2:A11)”的用法其实也非常好理解,将 B 列和 A 列互换下位置,然后组合在一起,这样“姓名”又跑到第 1 列了。

模糊关键词检索


如果想匹配出包含某个词的数据,使用 VLOOKUP 也可以轻松实现。


例如:“查找包含阳字姓名的员工工资”,输入如下公式:


=VLOOKUP("*"&H2&"*",B2:F11,5,0)

▲左右滑动查看完整公式


这里的技巧主要用到了通配符「*」,而「*」在公式中可以代表任意字符。



代替IF实现区间查找


在实际工作中,并不是所有的匹配都是精准匹配的,也常常会出现「区间匹配」。


例如:“根据不同的销量计算提成数”,使用如下公式:


=VLOOKUP(D2,A2:B6,2,1)

▲左右滑动查看完整公式


将函数的第 4 个参数改成 1 ,同时查找区域的数据必须从小往大排列,如下:



如果使用 IF 来完成需求,就非常复杂了,嵌套一堆,还容易出错,VLOOKUP 轻松就能搞定。

去除空格/不可见字符匹配


在部分不规范的数据中,命名肉眼看着一模一样,却怎么也匹配不上,大概率是因为查找关键词或者查找区域中存在空格导致的。


这个时候可以使用 SUBSTITUTE 或者 CLEAN 函数进行处理,公式如下:


=VLOOKUP(SUBSTITUTE(H2," ",""),B2:F11,2,0)

▲左右滑动查看完整公式


技巧也非常简单,利用 SUBSTITUTE 将空格替换掉即可,如果是不可见的字符,可以将 SUBSTITUTE 换成 CLEAN 即可。


横向匹配返回多列


现在查找单个数值的技巧我们已经掌握了,如果要查找返回 N 列数据呢?难道要写 N 个公式?其实只需要配合 COLUMN 函数即可实现。


例如:“根据工号返回姓名、部门、性别、年龄、工龄等字段”,只需要输入公式:


=VLOOKUP($H$2,$A$2:$F$11,COLUMN(B1),0)

▲左右滑动查看完整公式


这里用到的技巧为:COLUMN 函数动态生成 2、3、4、...的序列,向右拖动即可自动将多列返回,如下。



使用 COLUMN 返回多列的场景适合于字段是连续的,如果数据并非连续,可以使用 MATCH 来实现,后面会讲解到。

匹配多表查找


在实际工作中,可能存在不同条件检索不同表的情况,例如:深圳员工检索深圳表,广州员工检索广州表,使用 VLOOKUP+IF 即可实现。


例如:“返回不同城市员工的工资”,使用如下公式:


=VLOOKUP(B2,IF(A2="深圳",A6:F15,H6:M15),6,0)

▲左右滑动查看完整公式


这里用 IF 判断 A2 单元格是否为“深圳”,如果是则查找区域为 A6:F15,否则为 H6:M15,完美实现多表查找。



除了利用 IF ,还可以利用 OFFSET 来实现,相对来说会更复杂,不过支持的场景会更多,更详细的技巧会在 VLOOKUP 微课中讲解。

多条件匹配查找


前面分享了 9 个技巧,不过都是单条件的,利用 VLOOKUP 实现多条件查找其实也很简单,同样用到 IF 数组公式。


例如:“根据姓名+部门查找对应工资”,输入如下公式:


=VLOOKUP(H2&I2,IF({1,0},B2:B11&C2:C11,F2:F11),2,0)

▲左右滑动查看完整公式


由于姓名、部门可能存在重复,两个字段才能确定唯一一条数据。


这里使用 & 将两个关键词拼接起来,再使用 IF 数组公式将对应两列也拼接起来,同时组装上返回区域作为 VLOOKUP 的第 2 个参数。



VLOOKUP 多条件查询是数组公式,需要按 Ctrl+Shift+Enter 结束,否则会返回错误信息。

查找区域合并单元格检索


如果查找区域中存在合并单元格呢?也可以解决。


例如:“根据部门+姓名查找出对应的工资”,使用如下公式:


=VLOOKUP(F2,OFFSET($B$1,MATCH(E2,A:A,)-1,):C99,2,0)

▲左右滑动查看完整公式


这里使用 MATCH 找到部门所在的行号,然后用 OFFSET 向下进行偏移,通过这 2 个函数可以构建出动态匹配区域,即可实现需求。




这个案例会稍微难一点,如果不理解,建议将单元格拆分后才查找,会快很多。

查找词合并单元格查找


如果查找词所在列存在合并单元格,这种情况 VLOOKUP 也可以轻松搞定。


例如:“根据部门返回月度奖金”,使用如下公式:


=VLOOKUP(VLOOKUP("座",$D$2:D2,1),$A$2:$B$4,2,0)

▲左右滑动查看完整公式


这里嵌套了 VLOOKUP 函数,其中内部的函数用于查找 D 列截止至本行的最后一个非空值,这样就可以将查找词找到了。



查找返回多个结果


关键词和返回结果是 1 对 N 的关系,如何将所有结果都返回呢?


例如:“找出市场部所有员工姓名”,输入如下公式:


=VLOOKUP($H$2&ROW(A1),IF({1,0},$C$2:$C$11&COUNTIF(INDIRECT("c2:c"&ROW($2:$11)),$H$2),$B$2:$B$11),2,0)

▲左右滑动查看完整公式


公式非常复杂,整体思路如下:


  1. 用ROW函数生成序列;

  2. INDIRECT+ROW生成行数递增的区域;

  3. COUNTIF计算部门的个数,进行编号;

  4. IF数组公式将数据构建成一个新数组;


同样也是数组公式,三键结束后,如下:



公式兼容性虽然好,但是难度实在不小,如果想成为函数高手,这个公式也非常值得研究,另外 365 版本还有 FILTER 函数,会更便捷一些。

查找结果返回于同个单元格


依旧是返回多个结果,不过将结果一次性返回到一个单元格中,单纯利用 VLOOKUP 实现起来还是比较困难的,但是可以借助辅助列。


共有 2 个公式,如下:


G2 = C2&","&IFERROR(VLOOKUP(B2,B3:$G$12,6,),"")I2 = VLOOKUP(H2,$B$2:$G$11,6,)

▲左右滑动查看完整公式


这里用到了函数调用自身引用单元格的技巧将找到的数据依次拼接,最后使用二分法进行匹配,如下:



当然利用 VLOOKUP 实现这个需求难度的确过大,如果版本比较新,可以使用 TEXTJOIN+IF/FILTER 函数实现,会更简洁一些。


查找最后一个结果


如果查找的数据为多条,只想要最后一条,用 VLOOKUP 也可以实现。


例如:“找到市场部的最后一位职员”,输入如下公式:


=VLOOKUP(1,IF({1,0},0/(C2:C11=H2),B2:B11),2)

▲左右滑动查看完整公式


当忽略 VLOOKUP 的最后一个参数时,函数会使用二分法进行查找,同时用 0/条件 可以将不符合条件的数值变成错误值,符合的变成 0。


最后用 1 查找最后一个 0 即可实现需求,看起来很难,其实马马虎虎。




VLOOKUP跨多表匹配


如果数据被分散在 N 张 Sheet 表中,并不确定是其中的哪个,其实利用 INDIRECT+VLOOKUP 也可以轻松实现跨表匹配。


例如:“有深圳、广州、上海共计 3 张表,匹配员工工资”,输入如下公式:


=VLOOKUP(A2,INDIRECT(LOOKUP(1,0/COUNTIF(INDIRECT({"深圳";"广州";"上海"}&"!b:b"),A2),{"深圳";"广州";"上海"})&"!b:f"),5,0)

▲左右滑动查看完整公式


公式非常长,但是逻辑结构不难。


利用 INDIRECT 函数将所有表的数据全部导入进行匹配,找到非错误的值即可,如下。



不过对于这类表,建议使用 PQ 将表合并后在进行匹配,这样效率会高很多。

好了,那么关于 VLOOKUP 函数的 16 种用法技巧就分享到这里了,本次推文的练习文件也可以在公众号下载


关注公众号,回复「16」即可获得这份练习文件

你学会了么?学不会的 VLOOKUP ,终于可以学会了~


关于「VLOOKUP」的技巧分享就到这里了,希望对你有帮助~

每一次安利都花了很多精力来写,如果认为对你有帮助,不妨帮小北扩散和点赞,谢谢大家!


想了解数据处理和信息图表的更多思路与技巧?「Excel实战课,让你的图表会说话」超值 Excel 课程了解一下——


芒种零基础 Excel 数据透视表训练营,教你如何快速拆分数据、制作数据分析报告,搞定你的老板,为升职加薪提速!


今天咨询报名,仅需 59.9 元,5小时共计30节课教你零基础成为数据分析高手👇


↑一课解决你的数据分析问题


搭配Excel商务图表,仅需 69 元,5小时共计58节课教你零基础学会制作高大上的Excel商务图表👇


↑一课解决你的图表问题


掌握真正的可视化表达思维,并且做出合适的图表,你就能脱颖而出,让身边的人眼前一亮。


学完课程,你也能在10分钟内做出这种动态仪表盘(课程案例):



————— 常见问题 —————


Q: 课程有时间、次数限制吗?
A: 课程不限时间和次数,随时可学,长期有效。


Q: 手机上可以学习吗?

A: 可以,手机上安装网易云课堂 APP,登录账号即可学习。


Q: 课程学不会有老师答疑吗?

A: 当然有,作业点评,课程长期答疑,不怕学不下去。


Q: 除了课程还有其他学习资料么?
A: 课程学习完后,还会赠送你一份Excel图表大全,碰上不懂的数据结构,可以直接查询使用什么图表,另外还有16种配色方案模板,让你一键配色。


Q: 如何添加助理老师的微信?
A: 可以直接扫描下方的二维码,或者直接搜索:mongjoy001,即可添加助理老师进行打卡和答疑。


扫码添加助理老师/课程咨询&答疑


新课上线购课,还送配色卡、送图表大全……
👇猛戳【阅读原文】抓住更多优惠!

芒种学园
PPT、Excel、Word、职场技能,帮你提升各种工作能力,每天早上8点30分准时推送,专注能力提升,做你的职场课堂!
 最新文章