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

反向查找(从右往左查)

VLOOKUP 只能往右查,要往左查怎么办。

1

场景背景

员工表里工号在 A 列、姓名在 B 列。现在手上只有姓名,想反查工号——这就是「从右往左查」,VLOOKUP 做不到。三种解法:XLOOKUP(最推荐)、INDEX+MATCH(万能)、LOOKUP(1,0/(...)) 老写法。

2

数据结构

共 2 个 Sheet
Sheet:员工表
字段含义示例值
工号要返回的值(在左边)E03
姓名查找依据(在右边)王五
部门也可以反查销售部
Sheet:查询
字段含义示例值
姓名已知条件王五
工号反查结果E03
3

解决步骤

1
第 1 步:XLOOKUP 最直接
查找数组和返回数组可以任意位置,B 列找、A 列返回,一行搞定。
=XLOOKUP(A2,员工表!B:B,员工表!A:A,"查无此人")
2
第 2 步:INDEX + MATCH 万能写法
MATCH 找出姓名在第几行,INDEX 在 A 列取同一行。老版本也能用。
=INDEX(员工表!A:A,MATCH(A2,员工表!B:B,0))
3
第 3 步:LOOKUP 经典老写法
LOOKUP(1,0/(条件),返回列) 是数组技巧,兼容 2003 以上所有版本,公式较长但可靠。
=LOOKUP(1,0/(员工表!B:B=A2),员工表!A:A)
4
第 4 步:套 IFERROR 或直接用 XLOOKUP 的第 4 参数
找不到时给出友好提示,避免表格里出现 #N/A。
=IFERROR(INDEX(员工表!A:A,MATCH(A2,员工表!B:B,0)),"查无此人")
4

完整公式与逐段拆解

=XLOOKUP(A2,员工表!B:B,员工表!A:A,"查无此人")
A2要查的姓名
员工表!B:B在哪一列里找(可以在任意位置)
员工表!A:A要返回哪一列(在查找列的左边也没问题)
"查无此人"找不到时的提示,省掉 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
当前表:工资明细 · 公式单元格 A2 · 绿色底为公式,蓝色底为动态数组溢出结果

工资明细的工号列就是按姓名反查员工信息得到的

6

数据流向

数据流向演示1 / 4
来源查询!A2
➜
去向查找值
已知姓名「王五」
来源员工表!B2:B6
→
去向行号 4
在 B 列找到第 4 行
来源员工表!A4
→
去向结果
返回 A 列同一行
来源结果
→
去向查询!B2
写回查询表
跟着高亮一步步看数据怎么流动
7

注意事项与坑

!XLOOKUP 在 2016/2019 不可用,公司电脑版本杂时用 INDEX+MATCH。
!INDEX+MATCH 的 MATCH 区域必须是单列,不能选多列区域。
!LOOKUP(1,0/(...)) 遇到多条匹配只返回最后一个。
8

相关场景