Excel 2016跨工作表调用SEARCH函数返回#NAME?错误求助
错误原因
你遇到的#NAME?错误并非SEARCH函数导致,核心原因是Excel 2016版本不支持TEXTJOIN函数:
- TEXTJOIN是微软在Office 2019、Microsoft 365及更高版本中新增的内置函数,Excel 2016没有原生集成该函数,调用不存在的函数时就会返回#NAME?错误,你之前的排查结论存在偏差。
- 另外你的原有逻辑本身存在漏洞:拼接全列内容后用SEARCH匹配会出现误判,比如A2值为
张,L列存在单元格内容为张三时也会返回TRUE,无法实现单元格级的精确匹配。
可用解决方案
根据匹配需求可选择两种兼容Excel 2016的方案:
场景1:需要单元格内容完全匹配
直接用COUNTIF函数即可,兼容性拉满:
=COUNTIF(AnotherSheet!L3:L1048576, A2)>0
公式逻辑:统计AnotherSheet的L3到最后一行中,内容和A2完全一致的单元格数量,数量大于0则返回TRUE,否则返回FALSE。
场景2:需要子串模糊匹配(A列内容是L列某单元格的子串就算匹配)
用SUMPRODUCT配合ISNUMBER+SEARCH实现,不需要TEXTJOIN:
=SUMPRODUCT(--ISNUMBER(SEARCH(A2, AnotherSheet!L3:L1048576)))>0
公式逻辑:
- SEARCH逐个检测L列每个单元格是否包含A2的内容,找到返回位置数字,找不到返回错误值
- ISNUMBER将结果转为TRUE/FALSE逻辑值
--将逻辑值转为1/0数值- SUMPRODUCT对所有数值求和,总和大于0说明存在至少一个匹配项,返回TRUE
内容的提问来源于stack exchange,提问作者ShadowWolf01
相关产品推荐
相关产品推荐

