Σ表格公式学堂EXCEL FORMULA & SCENARIO
入门数据查找匹配 · 3 个 Sheet

根据工号从员工表匹配姓名和部门

考勤表只有工号,把姓名、部门从员工表带过来。

1

场景背景

HR 有两张表:员工表(工号、姓名、部门、月薪)和考勤表(工号、姓名、出勤天数)。考勤表的姓名列是空的,需要按工号从员工表里匹配。这种「一张表只有 ID,另一张表有详情」的情况,是 VLOOKUP 最经典的用法。

2

数据结构

共 2 个 Sheet
Sheet:员工表
字段含义示例值
工号查找依据,必须在第一列E03
姓名要返回的第 2 列王五
部门要返回的第 3 列销售部
Sheet:考勤表
字段含义示例值
工号查找值E03
姓名待填,用 VLOOKUP 匹配=VLOOKUP(A2,员工表!A:D,2,FALSE)
3

解决步骤

1
第 1 步:确定查找值在哪一列
VLOOKUP 只能「从左往右」查,所以查找值必须位于查找区域的第一列。这里工号在员工表 A 列,没问题。
2
第 2 步:写第一个 VLOOKUP
考勤表 B2 输入公式:拿 A2 的工号,去员工表 A:D 里找,返回第 2 列姓名。
=VLOOKUP(A2,员工表!A:D,2,FALSE)
3
第 3 步:锁定区域再往下拖
把查找区域改成 $A$2:$D$100(按 F4 加 $),否则拖公式时区域会跟着下移,导致后面的行找不到。
=VLOOKUP(A2,员工表!$A$2:$D$100,2,FALSE)
4
第 4 步:套 IFERROR 处理找不到的人
新员工还没录入员工表时会显示 #N/A,用 IFERROR 换成「待补录」。
=IFERROR(VLOOKUP(A2,员工表!$A$2:$D$100,2,FALSE),"待补录")
4

完整公式与逐段拆解

=IFERROR(VLOOKUP(A2,员工表!$A$2:$D$100,2,FALSE),"待补录")
A2查找值:本表的工号
员工表!$A$2:$D$100查找区域:从工号列开始,锁死区域
2返回区域内的第 2 列,即姓名
FALSE精确匹配,绝对不能省
IFERROR(...,"待补录")找不到时显示提示,而不是错误值
5

多 Sheet 示例

在编辑器中打开 ↗
ABCDEFG
1工号姓名部门基本工资绩效加班费应发合计
2E01张三销售部8,0001,2003009,500
3E02李四技术部9,5001,50050011,500
4E03王五销售部7,6009002008,700
5E04赵六市场部6,80080007,600
6E05孙七销售部8,2001,1004009,700
7E06周八技术部9,0001,60060011,200
8E07吴九市场部7,2007001508,050
9E08郑十技术部8,8001,30035010,450
10合计65,1009,1002,50076,700
当前表:工资明细 · 公式单元格 B2 · 绿色底为公式,蓝色底为动态数组溢出结果

工资明细的姓名列其实就是按工号匹配来的,B2 = 张三

6

数据流向

数据流向演示1 / 4
来源考勤表!A2
➜
去向查找值
考勤表 A2 工号 E03
来源员工表!A2:A6
→
去向定位第 4 行
在员工表 A 列逐行比对
来源员工表!B4
→
去向返回值
取该行第 2 列(姓名)
来源返回值
→
去向考勤表!B2
写入考勤表 B2
跟着高亮一步步看数据怎么流动
7

注意事项与坑

!查找值不在区域第一列 → 一定 #N/A,改用 INDEX+MATCH 或 XLOOKUP。
!漏写第 4 个参数 FALSE,默认近似匹配,会匹配到奇怪的行。
!两边格式不一致:一边是文本 "001"、一边是数字 1,永远匹配不上。
!区域没锁 $,拖公式后结果整体错位,这是新手最常见的坑。
8

相关场景