ARTICLE · 1096625
Excel VLOOKUP 完整用法:4个参数+3个实战场景+3个常见报错,一篇讲透
如果你平时经常用 Excel,相信一定遇到过这样的场景:
几百人的表格,只想查某一个人的数据; 两份名单放在一起,想快速找出谁没提交; 根据员工的业绩,自动判断“待提升、合格、优秀、销冠”; 明明公式写对了,却突然出现 #N/A、#REF!;公式往下一拉,结果全部跑偏。
这些问题,很多都可以用一个函数解决:
VLOOKUP。
VLOOKUP 是 Excel 中非常常用的查找函数。
但很多人学会的,其实只是最基础的一种:
精确查找。
真正把 VLOOKUP 用熟,还需要搞懂它的4个参数,尤其是第4个参数 0 和 1 到底有什么区别。
这篇文章就用 3 个真实工作场景 + 3 个常见报错,把 VLOOKUP 从头到尾讲清楚。
一、先搞懂 VLOOKUP 的4个参数
VLOOKUP 的基本结构是:
=VLOOKUP(查找值, 查找区域, 返回第几列, 匹配方式)
例如:
=VLOOKUP("王五",$A$2:$D$8,3,0)
可以拆成4部分:
"王五" | ||
$A$2:$D$8 | ||
3 | ||
0 |
第1个参数:找什么?
也就是你想查找的内容。
例如:
"王五"
或者直接引用单元格:
A2
第2个参数:在哪里找?
指定查找的数据区域。
例如:
$A$2:$D$8
注意:VLOOKUP 默认只会在这个区域的第1列进行查找。
所以,如果你的姓名在 A 列,就可以从 A 列开始选择区域。
第3个参数:返回第几列?
这个参数非常重要。
假设区域是:
A列:姓名B列:部门C列:业绩D列:工龄
那么:
1 → 返回姓名2 → 返回部门3 → 返回业绩4 → 返回工龄
比如:
=VLOOKUP("王五",$A$2:$D$8,3,0)
意思就是:
找到“王五”,然后返回这个区域中的第3列,也就是业绩。
第4个参数:0还是1?
这是 VLOOKUP 最容易被忽略的地方。
写 0:精确匹配
=VLOOKUP(A2,$A$2:$D$8,3,0)
意思是:
必须找到完全匹配的内容,找不到就返回
#N/A。
日常工作中,大多数查姓名、查编号、查订单号的情况,都可以使用 0。
写 1:近似匹配
=VLOOKUP(B2,$E$2:$F$5,2,1)
意思是:
根据区间进行匹配,返回对应等级。
这个功能非常适合:
成绩评级、绩效评级、提成计算、价格区间、折扣规则等。
但是有一个非常重要的前提:
查找表必须按照升序排列。

二、场景1:按照姓名查询业绩
假设我们有一份员工表:
现在,我们只想查询:
王五的业绩是多少?
可以使用:
=VLOOKUP("王五",$A$2:$D$8,3,0)
得到:
92000
公式可以理解成一句话:
在 A2:D8 里面找到“王五”,然后返回第3列的数据。
如果想让公式更加灵活,可以把姓名放到一个单元格里。
例如 A2 输入姓名:
=VLOOKUP(A2,$A$2:$D$8,3,0)
以后只需要修改 A2 的姓名,就能自动查询对应业绩。
一个小技巧
如果公式需要往下复制,查找区域建议加上 $:
$A$2:$D$8
这样下拉公式时,区域不会跟着移动。

三、场景2:两份名单快速核对谁没提交
这是 VLOOKUP 在工作中非常实用的一个场景。
比如:
A列是应提交名单,E列是已经提交名单。
现在需要快速找出:
谁还没有提交?
可以在 C2 输入:
=VLOOKUP(A2,$E$2:$E$6,1,0)
然后向下填充。
如果查到了,就返回对应姓名。
如果查不到,就会出现:
#N/A
例如:
于是,我们马上就能看出来:
李四、孙七没有出现在已交名单里。
这种方法特别适合:
培训签到核对 员工资料提交 客户名单比对 报名名单核查 月度数据核对
原本需要人工一条条检查,用公式就可以快速完成。

四、场景3:按照业绩自动评级
这就是很多人不知道的:
VLOOKUP 第4个参数写 1
假设公司的业绩等级规则是:
现在:
想让 Excel 自动判断等级。
可以使用:
=VLOOKUP(B2,$E$2:$F$5,2,1)
结果:
这里的关键就是:
最后一个参数 = 1
它不是要求“完全一样”,而是按照区间进行匹配。
例如:
85000
会落在:
80000 ≤ 85000 < 90000
所以返回:
优秀
这里一定要记住一个坑
使用:
VLOOKUP(...,1)
进行区间查找时:
等级表的第一列必须按照升序排列。
也就是:
0600008000090000
不能随便打乱顺序。
否则可能得到错误的匹配结果。

五、VLOOKUP最常见的3个报错
学会公式只是第一步。
真正工作的时候,最容易遇到的其实是下面3个问题。
01|#N/A:找不到
常见原因
查找值不在区域的第1列。
例如你写了:
=VLOOKUP(A2,$B$2:$E$8,3,0)
但是 A2 的姓名实际上在 B 列之外。
自然就找不到。
怎么解决?
检查两个地方:
① 查找值是否真的存在
② 查找区域的第1列是不是查找值所在列
记住一句话:
VLOOKUP 只能从查找区域的第一列开始找。
02|#REF!:第3个参数超过了区域列数
例如:
=VLOOKUP(A2,$A$2:$D$8,5,0)
但你选择的区域:
A、B、C、D
实际上只有4列。
你却要求返回第5列。
Excel 就会返回:
#REF!
怎么解决?
数清楚查找区域到底有几列。
例如:
A:D = 4列
那么第3个参数最多只能写:
4
03|结果错位:下拉后越来越不对
这个问题非常常见。
比如第一行:
=VLOOKUP(A2,A2:D8,3,0)
往下拖以后,可能会变成:
=VLOOKUP(A3,A3:D9,3,0)
查找区域也跟着往下移动了。
这时候结果自然可能出现问题。
怎么解决?
按:
F4
把区域锁定:
$A$2:$D$8
于是下拉以后:
=VLOOKUP(A2,$A$2:$D$8,3,0)
=VLOOKUP(A3,$A$2:$D$8,3,0)
查找区域就不会跑掉。

六、最后总结成一张速查表
| 找什么 | ||
| 在哪里找 | ||
| 返回哪列 | ||
| 精确还是区间 |
再记住:
查姓名、编号、订单号
=VLOOKUP(...,0)
精确匹配。
做等级、区间、提成
=VLOOKUP(...,1)
近似匹配 + 查找表升序排列。
七、VLOOKUP真正值得记住的,其实只有这几句话
第一:
第1个参数,告诉 Excel 找什么。
第二:
第2个参数,告诉 Excel 去哪里找。
第三:
第3个参数,告诉 Excel 返回哪一列。
第四:
0是精确匹配,1是近似匹配。
最后再记住两个高频操作:
公式下拉前,别忘了用
$锁定区域。
使用第4参数
1时,查找表第一列要按升序排列。
掌握这几个规则,VLOOKUP 就不再只是一个“查数据”的函数了。
查业绩、核名单、自动评级、区间匹配,基本都能用上。