Excel中双向XLOOKUP引用动态表返回#N/A的公式写法问题
问题说明
- 需要从两个结构完全一致的数据表中提取匹配信息,填充B2:C3单元格区域
- 两张表分别为:名为Table4的标准Excel结构化动态表、普通单元格值区域
- 面向普通值区域编写的双向XLOOKUP公式可正常运行,B3单元格原公式如下:
=XLOOKUP($A3,$A$15:$A$21,XLOOKUP(B$1,$B$14:$E$14,$B$15:$E$21)) - 面向Table4静态指定列的写法可正确取值,B3单元格静态写法如下:
=XLOOKUP(A3,Table4[Column1],Table4[2021])
该写法硬编码了2021列,无法实现列的动态匹配,不符合需求。
故障现象
尝试编写嵌套XLOOKUP实现动态列匹配时,公式返回#N/A错误,测试公式为:=XLOOKUP($A3,Table4[Column1],XLOOKUP(B$1,Table4[#Headers],Table4))
经测试:当表头为文本格式时上述嵌套公式可正常运行,当表头为数字格式(如数值型的2021)时匹配失败,需要适配数字表头的正确公式写法。

正确写法
报错原因是数据类型不匹配:结构化表Table4[#Headers]返回的数字表头为数值类型,若B$1单元格的年份为文本类型,二者类型不一致会导致XLOOKUP查找失败,统一类型即可。
B3单元格输入以下公式,可直接下拉、右拉填充整个B2:C3区域:=XLOOKUP($A3,Table4[Column1],XLOOKUP(--B$1,Table4[#Headers],Table4))
公式说明:
--作用是将B$1内的文本型年份转换为数值类型,和数字表头的类型保持一致完成匹配。如果遇到B$1为数值、表头为文本的反向场景,把--B$1替换为B$1&""将查找值转为文本即可。
内容的提问来源于stack exchange,提问作者arks
相关产品推荐
相关产品推荐

