在 Excel 中,XLOOKUP 是一个非常强大的函数,可以用来替代传统的 VLOOKUP 或 INDEX+MATCH。本教程将通过一个实际案例,带你一步一步理解以下公式的写法与逻辑:
=XLOOKUP(
1,
(Sheet1!$A$2:$A$1000=D2) * (Sheet1!$C$2:$C$1000=B2),
XLOOKUP(C2, Sheet1!$D$1:$I$1, Sheet1!$D$2:$I$1000),
"0"
)
一、公式作用
这个公式的目标是:
- 在 Sheet1 中,根据两个条件(列 A 与列 C),查找是否存在匹配记录;
- 找到后,再根据 C2 的值,定位到对应的行列交叉的数据;
- 如果找不到,返回
"0"。
简单来说: 先锁定行,再锁定列,最后取出交叉单元格的值 。
二、公式拆解与讲解
1. 外层 XLOOKUP
=XLOOKUP(1, 条件范围, 返回范围, "0")
1→ 要查找的目标值。条件范围→ 用逻辑判断生成的一列“真假匹配”。返回范围→ 如果匹配成功,要返回的结果。"0"→ 如果没找到,返回默认值。
2. 多条件匹配 (Sheet1!$A$2:$A$1000=D2) * (Sheet1!$C$2:$C$1000=B2)
Sheet1!$A$2:$A$1000=D2→ 判断列 A 是否等于当前表 D2。Sheet1!$C$2:$C$1000=B2→ 判断列 C 是否等于当前表 B2。- → 在 Excel 逻辑中,
TRUE=1,FALSE=0;两个条件相乘,只有同时为 TRUE 时才等于 1。
👉 最终得到一个 布尔数组 ,里面只有完全符合两个条件的行会返回 1。
3. 内层 XLOOKUP
XLOOKUP(C2, Sheet1!$D$1:$I$1, Sheet1!$D$2:$I$1000)
C2→ 要查找的列标题。Sheet1!$D$1:$I$1→ 表头区域。Sheet1!$D$2:$I$1000→ 数据区域。
👉 这个公式的作用是: 先找到 C2 对应的列,再返回整列数据 。
4. 组合逻辑
最终,外层 XLOOKUP 会:
- 在布尔数组中找到第一个值为
1的行; - 返回内层
XLOOKUP对应列的值; - 如果没找到匹配,则返回
"0"。
三、应用场景
这个公式特别适合:
- 需要 多条件查找 (如姓名 + 日期、产品 + 区域等);
- 需要 交叉取数 (根据行条件和列条件,取交叉点的数据);
- 避免繁琐的
INDEX + MATCH多层嵌套。
四、总结
通过这个公式,你可以用 XLOOKUP 实现:
- 多条件查找;
- 行列交叉匹配;
- 灵活返回默认值。
它不仅语法更直观,还比传统方法更高效。
要不要我帮你画一个 示例表格图解 (比如 Sheet1 的表头、数据、查找过程),让教程更直观?
正文完