VLOOKUP是什么
VLOOKUP 函数是一个查找函数,能够根据已有的数据找到和它一一对应的其他数据。它需要4个参数才能得到你想要的结果:
=VLOOKUP(查找值,数据表,列序数,匹配条件)
简单应用
| 学号 | 姓名 | 专业 | 毕业院校 | 爱好 |
|---|---|---|---|---|
| 214 | AA | 人资 | 北大 | 羽毛球 |
| 311 | BB | 公关 | 清华 | 足球 |
| 544 | CC | 工管 | 暨大 | 网球 |
| 512 | 小兰 | 金融 | 厦大 | 动漫 |
| 454 | DD | 生物医学 | 人大 | 长跑 |
| 450 | RR | 生物技术 | 暨大 | 画画 |
我想在下面分表中得到学号是 544、512、454 的同学毕业院校分别是哪一个?肿么办?
| 学号 | |
|---|---|
| 544 | |
| 512 | |
| 454 |
公式:
=VLOOKUP(H4,A:E,4,0)
用上面的公式是想得到 G2 单元格中 544 学号这位同学,他的毕业院校是哪一个。可以一个一个参数的来解读上面的公式:
❶ 找谁?
找 G2,也就是学号 544。
❷ 去哪儿找?
A 列到 E 列(A:E),也就是包含所有学号、院校等信息的数据表。
❸ 在第几列?
院校在数据表 A:E 范围内是第 4 列。
❹ 匹配条件?
精确匹配(0),必须找到一模一样的学号,多一个空格都不行。
进阶应用
我要表格里面一部分人的所有数据内容,怎么办呢?一列一列地 V 出来吗?那样不方便哦。
先介绍一个新的函数:COLUMN()。简单来说,它可以告诉你某一个单元格的在第几列。
| 学号 | 姓名 | 专业 | 毕业院校 | 爱好 |
|---|---|---|---|---|
| 544 | ||||
| 512 | ||||
| 454 |
=VLOOKUP($H4,$A:$E,COLUMN(B1),0)
我们先看计算姓名的公式:
❶ 找什么?
要拿学号去数据表中找,所以还是用 G2 中的学号 544。
❷ 去哪儿找?
去 A:E 列里面找,Excel 会自动在范围内的第一列找学号。
❸ 姓名在第几列?
其实在区域里的第 2 列,这里用了另外一个函数 COLUMN(B1),它的结果就是 2。之所以不直接填写数字 2,是为了公式填充到其他列后,可以自动得到 2、3、4、5等,从而返回不同的结果。
❹ 匹配条件?
精确匹配(0),找一模一样的学号。
再来看公式里比较高级的三个设置:
❶ $G2:锁定了查找学号在G列,这样向右复制公式时,始终保持在G列,不跑偏;而向下填充公式时,行号前没有美元符号,所以会自动变化成G2、G3、G4;
❷ $A:$E:同样的,锁定在了A到E列的匹配范围内,无论向右还是向下填充复制公式都不会变;
❸ COLUMN(B1):没有锁定列,所以向右填充时,会自动变成返回C1、D1、E1的列号,也就是3、4、5…
但这个公式能成功得到全部结果,其实靠运气。因为案例中,要返回的数据顺序分别是:
姓名、专业、毕业院校、爱好
而数据表中匹配顺序也刚好是:
姓名、专业、毕业院校、爱好
两者一模一样,所以才会能一一对应上。如果顺序不一样,中间还有多了一列或少了一列,就对不上了。怎么办?这个时候,就要用到更加高级的函数 Match,来自动返回各自对应的列数。
注意事项
在使用函数公式时,一定要注意下面几个事情,不然就可能会遇到麻烦:
❶ 在 Excel 中,参数的输入都是英文状态下的,不能用中文哦;
❷ 参数之间都是用逗号隔开的;
❸ 匹配方式我们常用的是精确匹配,就是 FALSE,也可以在第四个参数那里填写“0”,因为精确匹配=FALSE=0,模糊匹配=TURE=1。
如何通过全程查找匹配简称
| 存货名称 | 品牌名称 | 品牌名称 | |
|---|---|---|---|
| 丹姿水密码mi膜 | 冰之恋 | ||
| 舒蕾烁金焗油洗护系列 | 采媚 | ||
| 美涛润发造型啫哩膏 | 丹姿 | ||
| 冰之恋长效保湿护唇膏(香草) | 六神 | ||
| 美宝莲眼部及唇部卸妆液+小卸 | 美宝莲 | ||
| 玉兰油新生焕活深彻洁面乳 | 美涛 | ||
| 玉兰油水感透白莹肌亮肤液 | 强生 | ||
| 强生天然舒润滋养沐浴露 | 舒管 | ||
| |六神艾草健肤清凉沐浴露 | 玉兰油 | ||
| |六神艾草健肤止痒沐浴露 |
这是一个很典型的查找匹配问题:如何通过全程查找匹配简称。
通过 Lookup 函数和 Find 函数的组合,可以完美简洁,而且非常轻松:
这个公式看起来虽然复杂,但是结构是经典的多条件查找匹配结构,一旦掌握,以一当十。
**
=LOOKUP(1,0/((条件1)*(条件2)*(条件N)),结果区域**)
此公式结构中,需要改变的只有红色标识的几个参数。
=LOOKUP(1,0/FIND($D$2:$D$10,A2),$D$2:$D$10)
在此公式中,只有一个条件,由 Find 函数构成,而在查找到符合条件的数据后,返回 D2:D10 中的品牌名称(简称)。
注意事项:
**
❶ Find 函数中第一个参数是拿所有的品牌名称去 A2 中查找,逐个匹配; ❷ 条件区域和结果区域的行数必须相同,才能得到正确结果。 此案例中同为 D2:D10 区域,满足此条件。
感悟与技巧
技巧:
在单元格输入公式名称时,输了一半看到公式了,按下【Tab】键,可以补全公式。 绝对引用的方法,选中引用区域,按下F4键,就不用手动输入$符号
感悟:
用公式出错的时候,可以看看是哪个参数出错,再进行修改,我一般容易出错的地方没有绝对引用。 不会的时候,终极大招是百度,可谓一招鲜吃遍天。可搜索 VLOOKUP 常见错误,然后自己摸索调试,很快就能解决问题。
症结
❶ #REF!错误:引用了无效的单元格,会出现该错误。
❷ #VALUE!错误:公式中引用了错误参数或数值,会出现该错误。
查找对象不在查找区域的第一列中

错误解析
VLOOKUP 查找对象必须位于查询区域的最左列。此例中「武汉分部」在 B2:D10 的第二列 ,所以返回# N/A 错误。
解决方法
修改 VLOOKUP 的第二参数区域和第三参数列号。
D14 单元格正确公式应为:
=VLOOKUP(C14,C1:D2,2,0)
找不到完全匹配项
a. 数据类型不匹配

错误解析
在此例中,B 列的编号是文本格式,而 C14 是数字格式,数据类型不匹配 ,所以返回# N/A 错误。
=VLOOKUP(C14,B1:D2,3,0)
解决方法
将 VLOOKUP 的第一参数转换为文本。
D14 单元格正确公式应为:
=VLOOKUP(C14&"",B1:D10,3,0)
延伸思考
问题 如果 B 列是数字,C14 是文本该怎么办呢?
解答 需要将第一参数转换为数值。
公式如下:
=VLOOKUP(--C14,B1:D10,3,0)
b. 有空格或者不可见字符等

错误解析
在此例中,B 列和 C14 的单元格式都是文本格式,但是为什么 VLOOKUP 还是返回# N/A 错误呢?
鼠标点击 C14 单元格,可以在编辑栏里看到「101」后面后两个空格。

解决方法
用 TRIM 函数删掉两端的空格。
D14 单元格正确公式应为:
=VLOOKUP(TRIM(C14),B1:D10,3,0)
延伸思考
问题 如果是 C14 单元格中是非打印字符(在编辑栏里也看不见的隐身字符),怎么办?
解答 使用 CLEAN 函数删除不能打印的字符 。
公式如下:
=VLOOKUP(CLEAN(C14),B1:D10,3,0)
c. 所见非所得

错误解析
在此例中,C 列的分部名称是通过自定义单元格格式将「武汉」化妆为「武汉分部」,通过编辑栏,可以看见 C2 单元格实际还是「武汉」,所以返回# N/A 错误。

解决方法
❶ 在 A 列添加辅助列,让所见变为所得。
❷ 在 A2 单元格输入公式:=C2&”分部”,然后双击向下填充。
❸ 在 D14 单元格输入公式:
=VLOOKUP(C14,A1:D10,4,0)
查找区域没有加绝对引用

错误解析
在此例中,由于没有对查询区域限定为绝对引用,D14 单元格公式向下填充时,查找区域发生变化,导致找不到查询对象,返回# N/A 错误。
解决方法
在 D14 输入公式时锁定查找区域,然后向下填充。
D14 单元格正确公式应为:
=VLOOKUP(C14,$C$1:$D$10,2,0)
查找值并不完全匹配

错误解析
在此例中,C 列的分部名称包含「分部」两个字,而 C14 只有「武汉」,所以返回# N/A 错误。
解决方法
将 VLOOKUP 的第一参数使用通配符查询。
D14 单元格正确公式应为:
=VLOOKUP(C14&"*",C1:D10,2,0)
数据源中没有需要的查找值
错误解析
严格的来说,这并不是 VLOOKUP 的错误,因为确实找不到对象嘛。但是为了数据处理的美观性,我们可以通过 IFERROR 函数辅助,在 VLOOKUP 查不到对象时返回空值进行处理。
解决方法
可以使用 IFERROR 函数屏蔽错误。
**
=IFERRO(VLOOKUP(C14,C1:D10,2,0),"")
#REF!错误

错误解析
在此例中,C1:D10 这个数据区域只有两列,VLOOKUP 函数的第三参数却要求返回第 3 列的数据,超过了查找区域的最大列,所以返回#REF!错误。
解决方法
D14 单元格正确公式应为:
=VLOOKUP(C14,C1:D10,2,0)
#VALUE! 错误

错误解析
我们知道 VLOOKUP 函数的第三参数必须要介于(1~查询区域的最大列),而此例中第三参数小于 1,所以返回#VALUE! 错误。
解决方法
D14 单元格正确公式应为:
=VLOOKUP(C14,C1:D10,2,0)
结果就是不对
a.结果就是不对

错误解析
在此例中,武汉分部的销售额应该是 40846,但公式返回结果却是 83070,经过检查发现是 VLOOKUP 的第四参数使用了近似匹配。
解决方法
D14 单元格正确公式应为:
=VLOOKUP(C14,C1:D10,2,0)
b. 问题:查找值中包含通配符

错误解析
在此例中,102050 产品型号的库存应该是 236,但公式返回结果却是 479。这是因为查找值中包含通配符「」,而 VLOOKUP 支持通配符查询,导致查找到的是「10200*50」所对应的库存数 479。
在 Excel 中有三个通配符:*、?、~,用法如下图所示:
| 用法 | 要查找 |
|---|---|
| ? | 任何一个字符 例如,sm?th可以找到”smith”和”smyth” |
| * | 任意的数量字符 例如,*east可找到”Northeast”和”Southeast” |
| ~ | 问好、星号或波形符 例如,fy06~?可找到”fy06?” |
当查找值中包含这三个字符时,VLOOKUP 直接查找可能会返回错误的结果,所以在本例中需要将查找值中的「」替换为「~」,取消「*」作为通配符的特性。
解决方法
D14 单元格正确公式应为:
=VLOOKUP(SUBSTITUTE(C14,"*","~*"),C1:D10,2,0)
不可见字符

错误解析
日常工作中,我们会需要从企业管理系统导出数据或从网站复制、下载数据,但这一类的数据有时会带有一些相当顽固的「污渍」——不可见字符,这些「污渍」会给数据处理带来很多困扰。
解决方法
❶ 新建一个记事本文件,并将带有「污渍」的数据复制、粘贴到记事本中;
❷ 单击记事本左上角的文件-另存为,左下方的编码下拉列表中选择「ANSI」,然后单击保存,并关闭记事本;
❸ 再次打开刚才关闭的记事本文件,将记事本中的数据复制、粘贴回 Excel 文档中;
❹ 在 Excel 中进行查找替换,将?替换为空白;
