目标:你不用先理解一堆概念,先跟着做一遍。
做完以后,你会知道:怎么用员工编号,从另一张表里查出姓名、部门、职级。
配套文件:
示例1-员工字典表.xlsx:员工资料表,里面有员工编号、姓名、部门、职级等信息。示例2-销售订单表.xlsx:订单表,里面只有员工编号,需要把姓名、部门、职级查出来。
0. 先说人话:VLOOKUP 到底是干嘛的?
你可以把 VLOOKUP 理解成:
我手里有一个编号,去另一张表里找这个编号,找到以后,把同一行的其他信息拿回来。
比如:
订单表里只有员工编号:
| 员工编号 | 姓名 |
|---|---|
| E003 | ? |
员工字典表里有完整资料:
| 员工编号 | 姓名 | 部门 | 职级 |
|---|---|---|---|
| E003 | 王五 | 技术部 | P7 |
VLOOKUP 的作用就是:
拿 E003 去员工字典表里找 → 找到 E003 那一行 → 把姓名“王五”拿回来
1. 先照着做:查姓名
第一步:同时打开两个 Excel 文件
请同时打开:
示例1-员工字典表.xlsx示例2-销售订单表.xlsx
不要先改文件名,也不要移动文件位置。先照着做通一遍。
第二步:进入订单表
打开 示例2-销售订单表.xlsx。
进入工作表:
订单明细
你会看到:
| 订单号 | 员工编号 | 姓名(待查) | 部门(待查) | 职级(待查) |
|---|---|---|---|---|
| SO001 | E003 |
现在我们要在 C 列查出姓名。
第三步:在 C2 输入公式
点击 C2 单元格。
输入下面这个公式:
=VLOOKUP(B2,'[示例1-员工字典表.xlsx]员工信息'!$A$2:$G$11,2,FALSE)
然后按回车。
如果成功,C2 会显示:
王五
因为 B2 是 E003,而员工字典表里 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. 进阶一点:根据数量查折扣率
前面是“精确查找”。
现在看一个“近似查找”的例子:根据订单数量查折扣率。
员工字典表文件里有一个工作表:
产品折扣阶梯
里面大概是:
| 最低数量 | 折扣率 |
|---|---|
| 1 | 100% |
| 10 | 95% |
| 50 | 90% |
| 100 | 85% |
| 500 | 80% |
意思是:
数量达到 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 很好用,但它有几个限制:
- 只能从左往右查。
- 查找值必须在查找区域第一列。
- 多条件查找不方便。
- 公式比较长,跨工作簿时更长。
如果你用的是 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:找不到时别报错,显示“未知员工”
评论 / 0
共 0 条你可能是第一个留下评论的人