Google Sheets/Excel公式误匹配相似ID的解决方法求助
解决方案
问题出在原公式使用*&I8&*的模糊匹配逻辑,会把包含T15作为子串的ID(如T150、T151)也纳入统计。要精准匹配完整ID,需利用ID之间的分隔符-,确保只匹配被-包裹的目标ID。
修改后的公式
=IFERROR(SUMPRODUCT(--(ISNUMBER(SEARCH("-"&I8&"-", "-"&DumpGeneral!A:A&"-"))), --(ISNUMBER(SEARCH("-"&A$6&"-", "-"&DumpGeneral!A:A&"-")))) / SUMPRODUCT(--(ISNUMBER(SEARCH("-"&A$6&"-", "-"&DumpGeneral!A:A&"-")))), 0)
原理说明
- 统一包裹分隔符:通过
-"&DumpGeneral!A:A&"-"给每个单元格内容的首尾都添加-,确保所有ID(包括开头和结尾的ID)都被-完整包裹。例如原字符串M038-P9-G7-T34-T154-T223-T290-会变成-M038-P9-G7-T34-T154-T223-T290--,此时每个ID都以-ID-的形式存在。 - 精准匹配完整ID:使用
SEARCH("-"&I8&"-", ...)查找被-包裹的目标ID,只会匹配-T15-这类完整ID,不会命中-T150-中的子串T15。 - SUMPRODUCT替代COUNTIFS:由于COUNTIFS无法直接对拼接后的字符串进行统计,用SUMPRODUCT结合
ISNUMBER(SEARCH(...))实现多条件计数,同时覆盖首尾ID的匹配场景。
简化版(若ID仅出现在中间或结尾)
如果确认目标ID不会出现在字符串开头,可简化为COUNTIFS形式:
=IFERROR((COUNTIFS(DumpGeneral!A:A;"*-"&I8&"-*";DumpGeneral!A:A;"*"&A$6&"-*"))/(COUNTIFS(DumpGeneral!A:A;"*"&A$6&"-*"));0)
内容的提问来源于stack exchange,提问作者Foxinetra
相关产品推荐
相关产品推荐

