如何设置XLOOKUP匹配返回#N/A时改用前2位字符匹配取值
问题描述
当前使用以下公式实现跨工作表列匹配拉取数据:
=XLOOKUP(C2,'_MSA''s to Fac'!F:F,'_MSA''s to Fac'!K:K)
实际使用中部分匹配结果返回#N/A错误,需要调整公式:保留原有匹配逻辑的前提下,当原逻辑返回#N/A时,自动改用查找值前2位字符完成匹配并返回对应结果。
调整方案
使用IFERROR函数做双层逻辑容错,第一层执行原有精确匹配,匹配失败触发第二层前两位匹配逻辑,调整后公式如下:
=IFERROR(XLOOKUP(C2,'_MSA''s to Fac'!F:F,'_MSA''s to Fac'!K:K),XLOOKUP(LEFT(C2,2)&"*",'_MSA''s to Fac'!F:F,'_MSA''s to Fac'!K:K,,2))
公式说明
- 第一层逻辑完全复用原有精确匹配规则,所有原本能正常返回结果的场景不会受任何影响
- 第二层逻辑通过
LEFT(C2,2)提取查找值前2位,拼接通配符*匹配目标工作表F列中以该两位字符开头的第一条记录,XLOOKUP第五位参数填2代表启用通配符匹配模式 - 如果你需要严格匹配F列值的前两位和目标前两位完全相等(而非开头匹配),可以将第二层XLOOKUP替换为数组匹配写法:
非365/2021版本的Excel输入该公式后需要按XLOOKUP(LEFT(C2,2),LEFT('_MSA''s to Fac'!F:F,2),'_MSA''s to Fac'!K:K)Ctrl+Shift+Enter三键确认数组计算。 - 如果前两位匹配依然找不到对应结果,公式仍会返回
#N/A,可按需在外层嵌套IFERROR自定义缺省返回值,比如无匹配时返回空值或指定提示文本。
内容的提问来源于stack exchange,提问作者seth
相关产品推荐
相关产品推荐

