Excel中判断ID是否存在于另一表多值链接列 解决MATCH假阴性问题
Excel 跨行匹配换行分隔多值字段公式解决方案
你原来使用的=NOT(ISERROR(MATCH([@ID],Table1[LINKS],0)))出现假阴性的原因是MATCH函数会执行单元格全值匹配,只有当Table1[LINKS]列某一单元格的全部内容恰好等于待匹配ID时才会返回命中,无法识别单元格内换行分隔的多个独立ID。
适用于Excel 365/2021及以上版本
直接使用数组运算+逻辑判断即可,公式如下:
=OR(ISNUMBER(SEARCH(CHAR(10)&[@ID]&CHAR(10), CHAR(10)&SUBSTITUTE(Table1[LINKS]," ","")&CHAR(10))))
公式说明:
SUBSTITUTE(Table1[LINKS]," ","")先去掉LINKS字段里的多余空格,兼容你示例中01 \n 02这类带空格的分隔格式CHAR(10)对应Excel中的换行符,给所有LINKS内容和待匹配ID前后都拼接换行符,是为了避免部分匹配(比如ID为01不会误匹配到011)SEARCH函数会在所有处理后的LINKS内容中查找目标ID,ISNUMBER将查找结果转为布尔值,OR只要有任意一行匹配成功就返回TRUE
适用于Excel 2019及更早版本
旧版本Excel不支持自动数组运算,改用SUMPRODUCT实现相同逻辑,公式如下:
=SUMPRODUCT(--ISNUMBER(SEARCH(CHAR(10)&[@ID]&CHAR(10), CHAR(10)&SUBSTITUTE(Table1[LINKS]," ","")&CHAR(10))))>0
公式说明:
--将布尔值转为数值(TRUE转1,FALSE转0)SUMPRODUCT对所有匹配结果求和,只要求和结果大于0就说明存在匹配,返回TRUE- 无需按Ctrl+Shift+Enter三键,直接回车即可生效
内容的提问来源于stack exchange,提问作者Daniel Ashby
相关产品推荐
相关产品推荐

