你现在的位置:
函数XLOOKUP最强大、最灵活的查找
一、函数概述
XLOOKUP 是微软 Excel 365 和 Excel 2021 版本新增的查找函数,用于在数据范围内搜索指定值并返回对应结果 。相比 VLOOKUP,它具有以下核心优势 :
| 特性 | VLOOKUP | XLOOKUP |
|---|---|---|
| 查找方向 | 只能从左向右 | 左右任意方向 |
| 返回方式 | 只能返回单列 | 可返回整行/多列 |
| 错误处理 | 需配合 IFERROR | 内置错误提示参数 |
| 查找方向 | 只能从上往下 | 支持上下双向查找 |
| 匹配模式 | 精确/近似 | 精确/近似/通配符/二分查找 |
二、语法结构
=XLOOKUP(
lookup_value, ← 必需:要查找的值
lookup_array, ← 必需:查找范围(列或行)
return_array, ← 必需:返回值的范围
[if_not_found], ← 可选:找不到时返回的内容
[match_mode], ← 可选:匹配方式(0精确/1近似/-1反向/2通配符)
[search_mode] ← 可选:查找方向(1从上到下/-1从下到上/2二分升序/-2二分降序)
)
三、参数详解
| 参数 | 必需 | 说明 | 常用取值 |
|---|---|---|---|
| lookup_value | 是 | 要搜索的值(文本、数字、单元格引用) | 如:"A001" 或 F3 |
| lookup_array | 是 | 查找范围(单列或单行) | 如:A2:A100 |
| return_array | 是 | 返回值的范围(与查找范围同方向) | 如:B2:D100(可返回多列) |
| if_not_found | 否 | 未找到时显示的内容 | 如:"未找到" 或 0 |
| match_mode | 否 | 匹配方式 | 0=精确(默认),1=近似较大,-1=近似较小,2=通配符 |
| search_mode | 否 | 查找方向 | 1=从上到下(默认),-1=从下到上,2=二分升序,-2=二分降序 |
四、实用示例
示例 1:精确查找(最常用)
场景:根据职工编号查找评级
=XLOOKUP(C178, A165:A172, F165:F172)
- 在
A165:A172中查找C178的值 - 找到后返回
F165:F172对应位置的评级
示例 2:横向查找(替代 HLOOKUP)
场景:横向表格中根据月份查销售额
=XLOOKUP(B158, B148:K148, B150:K150, "未找到")
- 在第1行(
B148:K148)查找月份 - 返回第3行(
B150:K150)对应的销售额 - 找不到时显示
"未找到"
示例 3:反向查找(VLOOKUP 做不到)
场景:根据姓名反向查找职工编号(姓名在右,编号在左)
=XLOOKUP(C19, B2:B9, A2:A9)
- 在姓名列
B2:B9查找"老赵" - 返回左侧编号列
A2:A9的值
示例 4:返回多列(动态数组)
场景:根据订单编号一次性返回日期、书店、图书三列
=XLOOKUP(J4, A2:A35, B2:D35)
- 只需在一个单元格输入公式
- 结果自动溢出到相邻单元格,同时返回3列数据
整行返回:
=XLOOKUP(M4, A:A, B:G, "没找到", 0, 1)
- 返回
B:G整行6列数据
示例 5:多条件查找
场景:根据”书店名称+图书名称”查找订单编号
=XLOOKUP(J4&K4, C2:C35&D2:D35, A2:A35)
- 用
&连接多个条件作为查找值 - 用
&连接多列作为查找范围
示例 6:模糊匹配(近似查找)
场景:根据销售金额查找对应的提成比例
=XLOOKUP(F2, $J$3:$J$7, $K$3:$K$7, 0, 1)
- 第5参数
1:查找精确或下一个较大值 - 第5参数
-1:查找精确或下一个较小值
示例 7:通配符查找
场景:根据图书名称中的部分词查找销售等级
=XLOOKUP("*"&J3&"*", D:D, H:H, , 2)
*是通配符,代表任意字符- 第5参数
2:启用通配符匹配模式
示例 8:查找最后匹配的值
场景:查找某员工的最后一次打卡记录
=XLOOKUP(E2, A2:A100, C2:C100, , 0, -1)
- 第6参数
-1:从下到上搜索,返回最后一个匹配项
示例 9:双向查找(嵌套 XLOOKUP)
场景:根据姓名和科目查找对应成绩
=XLOOKUP(F1, B1:C1, XLOOKUP(E2, A2:A5, B2:C5))
- 内层 XLOOKUP:根据姓名返回该行的所有科目成绩数组
- 外层 XLOOKUP:在科目行中查找指定科目,返回对应成绩
示例 10:自定义错误提示
场景:找不到时显示友好提示而非 #N/A
=XLOOKUP(E2, A2:A5, B2:B5, "ID Not Found")
- 第4参数直接指定未找到时的返回值
- 无需再嵌套 IFERROR 函数
五、注意事项
| 注意点 | 说明 |
|---|---|
| 版本要求 | 需 Excel 365、Excel 2021 或 Excel 网页版 |
| 区域对齐 | lookup_array 和 return_array 必须同方向且大小一致 |
| 数据格式 | 查找值和查找范围的数据格式必须一致(文本 vs 数字) |
| 重复值 | 默认返回第一个匹配项,如需最后一个请用 search_mode=-1 |
| 动态数组 | 返回多列时会自动溢出,确保下方单元格为空 |
六、XLOOKUP vs VLOOKUP 对比总结
| 功能 | VLOOKUP 写法 | XLOOKUP 写法 |
|---|---|---|
| 基础查找 | =VLOOKUP(F3,A2:D10,4,0) | =XLOOKUP(F3,A2:A10,D2:D10) |
| 反向查找 | 无法实现 | =XLOOKUP(F3,C2:C10,A2:A10) |
| 横向查找 | =HLOOKUP(F3,A1:D10,3,0) | =XLOOKUP(F3,A1:D1,A3:D3) |
| 错误处理 | =IFERROR(VLOOKUP(...),"未找到") | =XLOOKUP(...,,"未找到") |
| 返回多列 | 无法实现 | =XLOOKUP(F3,A2:A10,B2:D10) |

发表回复