VLOOKUP使用????作为查找值时匹配任意四字符内容而非精确匹配如何解决
问题根因
Excel的VLOOKUP即使在第四个参数设为FALSE(精确匹配)的模式下,也会默认识别通配符:
?代表匹配任意1个单字符*代表匹配任意长度的任意字符~为通配符转义符,放在?或*前可以将其转为普通文本处理
你遇到的问题就是查找值????被识别成了通配符规则,匹配到了长度为4的Jack,而非精确匹配????文本本身。
解决方案
方案1:改造VLOOKUP公式,对通配符转义
无需修改第四个匹配参数,只需用SUBSTITUTE函数对查找值中的通配符做转义处理即可:
=VLOOKUP(SUBSTITUTE(B2,"?","~?"),A:A,1,FALSE)
如果还要兼容*作为普通文本的查找场景,可以嵌套两层替换:
=VLOOKUP(SUBSTITUTE(SUBSTITUTE(B2,"?","~?"),"*","~*"),A:A,1,FALSE)
该方案兼容所有Excel版本,不会影响普通文本的查找结果。
方案2:使用XLOOKUP实现无通配符精确匹配
如果使用Excel 2021及以上版本/365版本,可以直接使用XLOOKUP的完全精确匹配模式,默认不会识别通配符:
=XLOOKUP(B2,A:A,A:A,#N/A,0)
公式第五个参数设为0即为完全精确匹配,会直接对比文本的字面内容,不会将?、*当做通配符处理。
内容的提问来源于stack exchange,提问作者Namak
相关产品推荐
相关产品推荐

