如何用两个XLOOKUP函数进行交叉查找举例说明
浅谈出口账务和excel函数 用两个 XLOOKUP 做交叉查找,核心思路是:一个 XLOOKUP 先按列标题找到“整列”,另一个 XLOOKUP 再按行标题在这列里找到具体值;或者反过来,先找“整行”,再找具体列。
=XLOOKUP("李四", A2:A4, XLOOKUP("三月", B1:D1, B2:D4))
也可以把查找值放在单元格里,例如 G1 放“李四”,G2 放“三月”:
=XLOOKUP(G1, A2:A4, XLOOKUP(G2, B1:D1, B2:D4))
1. 内层:XLOOKUP("三月", B1:D1, B2:D4)
在列标题 B1:D1 中找到“三月”,返回数据区域 B2:D4 中对应的那一列,即 D2:D4,结果为 {200;210;220}。
2. 外层:XLOOKUP("李四", A2:A4, {200;210;220})
在行标题 A2:A4 中找到“李四”,返回对应值,即 210。
=XLOOKUP("三月", B1:D1, XLOOKUP("李四", A2:A4, B2:D4))
=XLOOKUP(G2, B1:D1, XLOOKUP(G1, A2:A4, B2:D4))
1. 内层:XLOOKUP("李四", A2:A4, B2:D4)
在行标题 A2:A4 中找到“李四”,返回数据区域中对应的那一行,即 B3:D3,结果为 {110,160,210}。
2. 外层:XLOOKUP("三月", B1:D1, {110,160,210})
在列标题 B1:D1 中找到“三月”,返回第三个值,即 210。
=XLOOKUP(行查找值, 行标题区域, XLOOKUP(列查找值, 列标题区域, 数据区域))
=XLOOKUP(列查找值, 列标题区域, XLOOKUP(行查找值, 行标题区域, 数据区域))
=XLOOKUP(G1, A2:A4, XLOOKUP(G2, B1:D1, B2:D4, "无此列"), "无此行")
这样如果列标题找不到,内层返回“无此列”;如果行标题找不到,外层返回“无此行”。
1. XLOOKUP 默认就是精确匹配,不用像 VLOOKUP 那样写 FALSE。
2. 内层 XLOOKUP 返回的必须是一个数组,外层 XLOOKUP 才能继续用它作为返回区域。
3. 标题区域和数据区域要对应:列标题是几列,数据区域就要有几列;行标题是几行,数据区域就要有几行。
4. 实际使用时建议加绝对引用,例如 $A$2:$A$4、$B$1:$D$1、$B$2:$D$4,方便下拉填充。
5. 这种写法可以完全替代传统的 INDEX + MATCH + MATCH 交叉查找。