Excel VLOOKUP 傻瓜版教程:照着做,查出姓名、部门、职级

面向 Excel 新手的 VLOOKUP 入门教程,用员工编号查询姓名、部门、职级,顺带讲清楚 FALSE、锁定区域、IFERROR 和常见错误。

文章目录

目标:你不用先理解一堆概念,先跟着做一遍。
做完以后,你会知道:怎么用员工编号,从另一张表里查出姓名、部门、职级。

配套文件:

  • 示例1-员工字典表.xlsx:员工资料表,里面有员工编号、姓名、部门、职级等信息。
  • 示例2-销售订单表.xlsx:订单表,里面只有员工编号,需要把姓名、部门、职级查出来。

0. 先说人话:VLOOKUP 到底是干嘛的?

你可以把 VLOOKUP 理解成:

我手里有一个编号,去另一张表里找这个编号,找到以后,把同一行的其他信息拿回来。

比如:

订单表里只有员工编号:

员工编号姓名
E003

员工字典表里有完整资料:

员工编号姓名部门职级
E003王五技术部P7

VLOOKUP 的作用就是:

拿 E003 去员工字典表里找 → 找到 E003 那一行 → 把姓名“王五”拿回来

1. 先照着做:查姓名

第一步:同时打开两个 Excel 文件

请同时打开:

  1. 示例1-员工字典表.xlsx
  2. 示例2-销售订单表.xlsx

不要先改文件名,也不要移动文件位置。先照着做通一遍。


第二步:进入订单表

打开 示例2-销售订单表.xlsx

进入工作表:

订单明细

你会看到:

订单号员工编号姓名(待查)部门(待查)职级(待查)
SO001E003

现在我们要在 C 列查出姓名。


第三步:在 C2 输入公式

点击 C2 单元格。

输入下面这个公式:

=VLOOKUP(B2,'[示例1-员工字典表.xlsx]员工信息'!$A$2:$G$11,2,FALSE)

然后按回车。

如果成功,C2 会显示:

王五

因为 B2E003,而员工字典表里 E003 对应的姓名是 王五


2. 这条公式是什么意思?

公式是:

=VLOOKUP(B2,'[示例1-员工字典表.xlsx]员工信息'!$A$2:$G$11,2,FALSE)

你先不要怕,拆开看就 4 块:

=VLOOKUP(要找谁, 去哪里找, 拿第几列, 必须精确找)

对应到这条公式:

公式部分意思人话解释
B2要找谁我要找 B2 里的员工编号,也就是 E003
'[示例1-员工字典表.xlsx]员工信息'!$A$2:$G$11去哪里找去员工字典表的 A2 到 G11 里面找
2拿第几列找到以后,返回第 2 列,也就是姓名
FALSE精确匹配必须一模一样才算找到

记住一句话:

VLOOKUP = 拿一个值,去另一张表第一列找,找到后返回右边某一列

3. 为什么最后一定要写 FALSE?

新手记死规则:

查编号、姓名、订单号、学号,一律写 FALSE。

也就是:

=VLOOKUP(B2, 查找区域, 第几列, FALSE)

不要省略最后一个参数。

如果你不写 FALSE,Excel 可能会按“近似匹配”去找,结果可能看起来对,实际上是错的。


4. 向下填充:把其他订单也查出来

C2 查出姓名以后,把鼠标放到 C2 右下角的小方块上。

当鼠标变成黑色小十字时,双击,或者向下拖到 C12。

这样 C2 到 C12 都会自动查姓名。

注意:最后一行员工编号是 E999,这个编号在员工字典表里不存在,所以它会显示:

#N/A

#N/A 的意思就是:

没找到

5. 让“没找到”显示得更友好

如果你不想看到 #N/A,可以用 IFERROR 包一层。

把 C2 公式改成:

=IFERROR(VLOOKUP(B2,'[示例1-员工字典表.xlsx]员工信息'!$A$2:$G$11,2,FALSE),"未知员工")

意思是:

如果 VLOOKUP 找到了,就显示姓名;
如果找不到,就显示“未知员工”。

然后再向下填充到 C12。

最后一行 E999 就会显示:

未知员工

6. 查部门、查职级:只改一个数字

刚才查姓名用的是:

=IFERROR(VLOOKUP(B2,'[示例1-员工字典表.xlsx]员工信息'!$A$2:$G$11,2,FALSE),"未知员工")

这里的 2 表示返回员工字典表的第 2 列。

员工字典表的列是这样排的:

第几列字段
第 1 列员工编号
第 2 列姓名
第 3 列部门
第 4 列职级
第 5 列月薪
第 6 列入职日期
第 7 列城市

所以:

  • 查姓名:用 2
  • 查部门:用 3
  • 查职级:用 4

D2 查部门

点击 D2,输入:

=IFERROR(VLOOKUP(B2,'[示例1-员工字典表.xlsx]员工信息'!$A$2:$G$11,3,FALSE),"未知部门")

然后向下填充到 D12。


E2 查职级

点击 E2,输入:

=IFERROR(VLOOKUP(B2,'[示例1-员工字典表.xlsx]员工信息'!$A$2:$G$11,4,FALSE),"未知职级")

然后向下填充到 E12。


7. 到这里,你已经会用 VLOOKUP 了

你已经掌握了最常用的用法:

根据一个编号,去另一张表查对应信息。

这就是 VLOOKUP 日常 80% 的使用场景。

核心公式模板:

=IFERROR(VLOOKUP(要查的值, 查找区域, 返回第几列, FALSE), "找不到时显示什么")

套到本例就是:

=IFERROR(VLOOKUP(B2,'[示例1-员工字典表.xlsx]员工信息'!$A$2:$G$11,2,FALSE),"未知员工")

8. $A$2:$G$11 里的 $ 是什么意思?

你会看到公式里有:

$A$2:$G$11

这里的 $ 叫“锁定引用”。

人话解释:

我向下拖公式的时候,员工字典表的范围不要跟着乱动。

如果不加 $,你向下填充时,Excel 可能会把区域从:

A2:G11

变成:

A3:G12

这样查找范围就偏了。

所以新手记住:

查找区域一定要加 $ 锁住。

正确:

$A$2:$G$11

不推荐:

A2:G11

9. VLOOKUP 最重要的 4 个规矩

规矩 1:查找值必须在查找区域的第一列

VLOOKUP 只能在查找区域的第一列找。

比如这个区域:

$A$2:$G$11

第一列是 A 列,也就是“员工编号”。

所以你可以用员工编号查姓名、部门、职级。

但如果你想用姓名反过来查员工编号,普通 VLOOKUP 不适合。


规矩 2:查编号时,最后一定写 FALSE

正确:

=VLOOKUP(B2,区域,2,FALSE)

不推荐:

=VLOOKUP(B2,区域,2)

因为不写最后一个参数,Excel 可能会用近似匹配。


规矩 3:查找区域要锁住

正确:

$A$2:$G$11

不推荐:

A2:G11

规矩 4:返回第几列,是从查找区域开始数,不是从 Excel 整张表开始数

比如查找区域是:

$A$2:$G$11

那 A 列就是第 1 列,B 列就是第 2 列,C 列就是第 3 列。

如果查找区域是:

$B$2:$G$11

那 B 列才是第 1 列。

不要按 Excel 的原始列号去数,要按你选的查找区域去数。


10. 如果你把两个表复制到同一个 Excel 文件里

如果你嫌跨文件公式太长,可以把两个表放到同一个 Excel 文件里。

也就是一个文件里有这些工作表:

订单明细
员工信息
产品折扣阶梯

这时 C2 查姓名的公式可以简化成:

=IFERROR(VLOOKUP(B2,员工信息!$A$2:$G$11,2,FALSE),"未知员工")

D2 查部门:

=IFERROR(VLOOKUP(B2,员工信息!$A$2:$G$11,3,FALSE),"未知部门")

E2 查职级:

=IFERROR(VLOOKUP(B2,员工信息!$A$2:$G$11,4,FALSE),"未知职级")

这个版本更短,更适合练习。


11. 进阶一点:根据数量查折扣率

前面是“精确查找”。

现在看一个“近似查找”的例子:根据订单数量查折扣率。

员工字典表文件里有一个工作表:

产品折扣阶梯

里面大概是:

最低数量折扣率
1100%
1095%
5090%
10085%
50080%

意思是:

数量达到 1 件,按 100%;
数量达到 10 件,按 95%;
数量达到 50 件,按 90%;
数量达到 100 件,按 85%;
数量达到 500 件,按 80%。

比如数量是 55,它没有刚好等于 50 或 100。

Excel 会找“不超过 55 的最大档位”,也就是 50,所以折扣率是 90%。


I2 查折扣率

示例2-销售订单表.xlsx订单明细 工作表里,点击 I2

输入:

=VLOOKUP(G2,'[示例1-员工字典表.xlsx]产品折扣阶梯'!$A$2:$B$6,2,TRUE)

这里最后写的是 TRUE,不是 FALSE

因为折扣是按区间匹配,不是必须一模一样。

注意:近似匹配有一个硬要求:

第一列必须从小到大排序。

也就是最低数量必须是:

1、10、50、100、500

不能乱序。


J2 计算折后金额

点击 J2,输入:

=G2*H2*I2

意思是:

数量 × 单价 × 折扣率

然后把 I2 和 J2 都向下填充到第 12 行。


12. 常见错误:看到这些别慌

看到的错误人话解释怎么办
#N/A没找到检查编号是否存在;或者用 IFERROR 显示“未知员工”
#REF!引用坏了检查文件是否改名、移动,或者列号是否超出范围
#VALUE!公式参数有问题检查逗号、区域、列号是否写错
查出来不对可能用了近似匹配最后一个参数改成 FALSE
向下拖后出错查找区域没锁住把区域写成 $A$2:$G$11

13. 新手检查清单

写完公式后,按这个顺序检查:

  • 第 1 个参数是不是员工编号单元格?比如 B2
  • 第 2 个参数是不是员工字典表范围?比如 $A$2:$G$11
  • 查找区域第一列是不是员工编号?
  • 查姓名是不是写 2?查部门是不是写 3?查职级是不是写 4
  • 查编号时最后是不是写了 FALSE
  • 向下填充前,查找区域有没有 $

14. 先不要学太多高级写法

如果你是第一次学 VLOOKUP,先掌握这 3 个公式就够了:

查姓名:

=IFERROR(VLOOKUP(B2,'[示例1-员工字典表.xlsx]员工信息'!$A$2:$G$11,2,FALSE),"未知员工")

查部门:

=IFERROR(VLOOKUP(B2,'[示例1-员工字典表.xlsx]员工信息'!$A$2:$G$11,3,FALSE),"未知部门")

查职级:

=IFERROR(VLOOKUP(B2,'[示例1-员工字典表.xlsx]员工信息'!$A$2:$G$11,4,FALSE),"未知职级")

把这 3 个练熟,VLOOKUP 的基本功就有了。


15. 以后再看:VLOOKUP 的局限

VLOOKUP 很好用,但它有几个限制:

  1. 只能从左往右查。
  2. 查找值必须在查找区域第一列。
  3. 多条件查找不方便。
  4. 公式比较长,跨工作簿时更长。

如果你用的是 Excel 365 或 Excel 2021,可以以后学习 XLOOKUP

比如根据员工编号查姓名,可以写成:

=XLOOKUP(B2,'[示例1-员工字典表.xlsx]员工信息'!$A$2:$A$11,'[示例1-员工字典表.xlsx]员工信息'!$B$2:$B$11,"未知员工")

但第一遍学习时,不建议一上来就学 XLOOKUP。

先把 VLOOKUP 练熟。


16. 最后总结

VLOOKUP 就一句话:

拿一个值,去另一张表第一列找,找到后返回同一行右边某一列。

最常用模板:

=IFERROR(VLOOKUP(要查的值, 查找区域, 返回第几列, FALSE),"没找到时显示什么")

本教程最核心的公式:

=IFERROR(VLOOKUP(B2,'[示例1-员工字典表.xlsx]员工信息'!$A$2:$G$11,2,FALSE),"未知员工")

你只需要记住:

B2:我要查哪个员工编号
$A$2:$G$11:去员工字典表哪里查
2:返回姓名这一列
FALSE:必须精确匹配
IFERROR:找不到时别报错,显示“未知员工”

你可能还感兴趣