excel做逆向查询,直接用 xlookup 就能搞定“查找列在右、返回列在左”的需求,最短写法是 =xlookup(要查的值,查找列,返回列)。本次操作使用的是microsoft 365版本的excel。
第一步:确认查找列和返回列
先理清数据逻辑:普通 VLOOKUP 只能从左往右查,逆向查询正好反过来,要找的内容所在列在右边,需要返回的数据在它左边。示例里按姓名查员工编号,姓名列就是查找列,员工编号列就是返回列;注意这两个选中的区域行数必须完全一致。

第二步:输入XLOOKUP公式
点到要输出结果的单元格,输入 =XLOOKUP(H2,D2:D11,B2:B11),其中 H2 是要查的姓名,D2:D11 是姓名所在的查找列,B2:B11 是要返回的编号列。这个公式没有要求返回列必须在查找列右侧,所以直接就能完成向左查询。

第三步:核对返回结果
按回车后检查出来的结果是不是你要的目标数据。这里重点核对两个位置:公式里的 lookup_array 指向姓名列,return_array 指向编号列;要是这两个区域填反了,结果就会变成按编号查姓名。

第四步:补上未找到提示
正式使用的表格建议把第四参数补上,公式写成 =XLOOKUP(H2,D2:D11,B2:B11,"未找到")。这样姓名不存在时,单元格会显示“未找到”,不会露出扎眼的 #N/A 报错,后续打印、汇总或者复制给别人时观感也更干净。
本文档主要介绍如何通过python对office excel进行读写操作,使用了xlrd、xlwt和xlutils模块。另外还演示了如何通过Tcl tcom包对excel操作。感兴趣的朋友可以过来看看

XLOOKUP函数语法
XLOOKUP 的完整语法是 XLOOKUP(lookup_value, lookup_array, return_array, [if_not_found], [match_mode], [search_mode])。做逆向查询只需要把查找列和返回列按真实位置填进去就行,完全不用调整原表的列顺序。
| 参数 | 是否必填 | 示例写法 | 作用 |
|---|---|---|---|
lookup_value |
必填 | H2 |
要查询的值,比如姓名、工号或订单号 |
lookup_array |
必填 | D2:D11 |
查找值所在区域,本例是右侧姓名列 |
return_array |
必填 | B2:B11 |
返回结果所在区域,本例是左侧编号列 |
if_not_found |
可选 | "未找到" |
查不到时显示的文字 |
match_mode |
可选 | 0 |
匹配方式,0 表示精确匹配 |
search_mode |
可选 |
1 或 -1
|
搜索方向,1 从上往下,-1 从下往上 |
常见错误怎么判断
显示 #N/A,通常是查找值不存在,或者姓名前后多了看不见的空格,可以先用 TRIM 做个辅助列清理;显示 #VALUE!,多半是 lookup_array 和 return_array 选中的区域尺寸不一致;显示 #NAME?,说明当前 Excel 版本不认识 XLOOKUP 这个函数;显示 #SPILL!,通常是公式要溢出输出的区域被其他内容挡住了。
扩展示例
按姓名返回对应部门,可以写 =XLOOKUP(H2,D2:D11,A2:A11,"未找到");按姓名返回多列信息,可以写 =XLOOKUP(H2,D2:D11,A2:C11,"未找到"),结果会横向溢出部门、编号和岗位。遇到重复姓名时,默认返回从上往下找到的第一条;如果要取最后一条,用 =XLOOKUP(H2,D2:D11,B2:B11,"未找到",0,-1)。
如果你用的是 WPS 或旧版 Excel,先确认是否支持该函数;不支持的话可以改用 =INDEX(B2:B11,MATCH(H2,D2:D11,0)),它同样能按右侧姓名列返回左侧编号。










