Excel XLOOKUP 函数 #
函数概览 #
XLOOKUP 是 Excel 2019/365 引入的新一代查找函数,集成了 VLOOKUP、HLOOKUP、INDEX+MATCH 的功能。
text
┌─────────────────────────────────────────────────────────────┐
│ XLOOKUP 概览 │
├─────────────────────────────────────────────────────────────┤
│ │
│ XLOOKUP 是 VLOOKUP 的升级版: │
│ ✓ 默认精确匹配 │
│ ✓ 可以向左查找 │
│ ✓ 可以返回多个值 │
│ ✓ 内置错误处理 │
│ ✓ 支持通配符 │
│ ✓ 支持反向查找 │
│ │
└─────────────────────────────────────────────────────────────┘
XLOOKUP 函数 #
语法 #
excel
=XLOOKUP(lookup_value, lookup_array, return_array,
[if_not_found], [match_mode], [search_mode])
参数:
- lookup_value: 要查找的值
- lookup_array: 查找范围
- return_array: 返回范围
- if_not_found: 找不到时返回的值(可选)
- match_mode: 匹配模式(可选)
- 0:精确匹配(默认)
- -1:精确匹配,找不到返回下一个较小值
- 1:精确匹配,找不到返回下一个较大值
- 2:通配符匹配
- search_mode: 搜索模式(可选)
- 1:从第一项开始搜索(默认)
- -1:从最后一项开始搜索
- 2:二分法搜索(升序)
- -2:二分法搜索(降序)
基本用法 #
excel
=XLOOKUP("产品B", A:A, B:B) 基本查找
=XLOOKUP("产品B", A:A, B:B, "未找到") 带默认值
=XLOOKUP("产品B", A:A, B:C) 返回多列
与 VLOOKUP 对比 #
excel
VLOOKUP:
=VLOOKUP("产品B", A:C, 2, FALSE)
=IFERROR(VLOOKUP("产品B", A:C, 2, FALSE), "未找到")
XLOOKUP:
=XLOOKUP("产品B", A:A, B:B)
=XLOOKUP("产品B", A:A, B:B, "未找到")
XLOOKUP 更简洁,功能更强大
查找示意图 #
text
查找"李四"的电话:
A B C
1 姓名 电话 地址
2 张三 138xxxx 北京
3 李四 139xxxx 上海 ← 找到
4 王五 137xxxx 广州
=XLOOKUP("李四", A:A, B:B) → 139xxxx
=XLOOKUP("李四", A:A, B:C) → 返回电话和地址两列
核心功能 #
1. 默认精确匹配 #
excel
VLOOKUP 需要指定 FALSE:
=VLOOKUP("产品B", A:C, 2, FALSE)
XLOOKUP 默认精确匹配:
=XLOOKUP("产品B", A:A, B:B)
2. 内置错误处理 #
excel
VLOOKUP 需要 IFERROR:
=IFERROR(VLOOKUP("产品D", A:C, 2, FALSE), "未找到")
XLOOKUP 内置错误处理:
=XLOOKUP("产品D", A:A, B:B, "未找到")
3. 向左查找 #
excel
VLOOKUP 无法实现:
=VLOOKUP("产品B", B:A, 2, FALSE) ✗ 错误
XLOOKUP 轻松实现:
=XLOOKUP("产品B", B:B, A:A) ✓ 正确
4. 返回多列 #
excel
=XLOOKUP("产品B", A:A, B:D)
返回 B、C、D 三列的值
需要横向拖动或使用数组
5. 反向查找 #
excel
从最后一个开始查找:
=XLOOKUP("产品A", A:A, B:B, , 0, -1)
查找最后一个"产品A"对应的值
6. 通配符匹配 #
excel
=XLOOKUP("产品*", A:A, B:B, , 2)
查找以"产品"开头的第一个值
实际示例 #
基本查找 #
text
产品信息:
A B C
1 产品ID 产品名 单价
2 P001 产品A 100
3 P002 产品B 200
4 P003 产品C 150
查询产品名:
=XLOOKUP("P002", A:A, B:B) → "产品B"
查询单价:
=XLOOKUP("P002", A:A, C:C) → 200
带默认值:
=XLOOKUP("P004", A:A, B:B, "未知产品") → "未知产品"
返回多列 #
text
=XLOOKUP("P002", A:A, B:C)
结果:
A B
1 产品B 200
需要选中两个单元格,输入公式后按 Ctrl+Shift+Enter(旧版)
或直接按 Enter(Excel 365)
双向查找 #
text
销售数据:
A B C D
1 1月 2月 3月
2 产品A 100 120 150
3 产品B 200 180 220
查找产品B在2月的销量:
=XLOOKUP("产品B", A2:A3, XLOOKUP("2月", B1:D1, B2:D3))
→ 180
或使用 INDEX+MATCH:
=INDEX(B2:D3, MATCH("产品B", A2:A3, 0), MATCH("2月", B1:D1, 0))
区间查找 #
text
税率表:
A B
1 收入 税率
2 0 0%
3 3000 3%
4 12000 10%
5 25000 20%
查找收入15000对应的税率:
=XLOOKUP(15000, A:A, B:B, , -1)
→ 10%
使用 -1 模式:找不到精确匹配时,返回下一个较小值
查找最后一个值 #
text
销售记录:
A B
1 日期 销量
2 1月1日 100
3 1月2日 150
4 1月3日 120
查找最后一次记录的销量:
=XLOOKUP(1, B:B, B:B, , 0, -1)
或
=XLOOKUP(LOOKUP(2, 1/(B:B<>""), B:B), B:B, B:B)
简化版(查找最后一个非空值):
=XLOOKUP(TRUE, B:B<>"", B:B, , 0, -1)
高级应用 #
嵌套 XLOOKUP #
excel
=XLOOKUP(XLOOKUP(A1, 表1!A:A, 表1!B:B), 表2!A:A, 表2!B:B)
先在表1查找,再用结果在表2查找
多条件查找 #
excel
=XLOOKUP(1, (A:A="华东")*(B:B="产品A"), C:C)
查找华东区产品A的值
条件求和 #
excel
=SUM(XLOOKUP(A1:A10, B:B, C:C))
批量查找并求和
实战案例 #
案例1:员工信息查询 #
text
员工表:
A B C D
1 工号 姓名 部门 职位
2 E001 张三 销售部 经理
3 E002 李四 技术部 工程师
查询工号E002的部门:
=XLOOKUP("E002", A:A, C:C) → "技术部"
根据姓名查工号(向左查找):
=XLOOKUP("李四", B:B, A:A) → "E002"
查询完整信息:
=XLOOKUP("E002", A:A, B:D) → 返回姓名、部门、职位
案例2:价格查询 #
text
价格表:
A B C
1 产品ID 产品名 单价
2 P001 产品A 100
3 P002 产品B 200
订单表:
A B C
1 产品ID 产品名 单价
2 P001 =XLOOKUP(A2, 价格表!A:A, 价格表!B:B)
3 P002 =XLOOKUP(A3, 价格表!A:A, 价格表!B:B)
案例3:最近匹配 #
text
查找最接近的值:
数据:
A B
1 数值 结果
2 10 A
3 20 B
4 30 C
查找最接近25的值:
=XLOOKUP(25, A:A, B:B, , 1) → "B"(返回下一个较大值)
=XLOOKUP(25, A:A, B:B, , -1) → "B"(返回下一个较小值)
XLOOKUP vs 其他查找函数 #
text
┌─────────────────────────────────────────────────────────────┐
│ 查找函数对比 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 功能 VLOOKUP INDEX+MATCH XLOOKUP │
│ ───────────────────────────────────────────────── │
│ 精确匹配 需指定 需指定 默认 │
│ 向左查找 ✗ ✓ ✓ │
│ 错误处理 需IFERROR 需IFERROR 内置 │
│ 返回多列 ✗ ✓ ✓ │
│ 反向查找 ✗ 复杂 简单 │
│ 通配符 ✓ ✓ ✓ │
│ 区间查找 ✓ ✓ ✓ │
│ 代码简洁度 中等 复杂 简洁 │
│ │
└─────────────────────────────────────────────────────────────┘
小结 #
XLOOKUP 是 Excel 新一代查找函数,功能强大且简洁:
| 特性 | 说明 |
|---|---|
| 默认精确匹配 | 无需指定 FALSE |
| 内置错误处理 | if_not_found 参数 |
| 向左查找 | 查找和返回范围独立 |
| 返回多列 | return_array 可以是多列 |
| 反向查找 | search_mode 参数 |
| 通配符 | match_mode = 2 |
接下来,让我们学习 其他引用函数,掌握更多引用技巧。
最后更新:2026-04-11