如何在SUMPRODUCT函数中使用通配符筛选含Total的列?
SUMPRODUCT中正确使用通配符的方法
直接在SUMPRODUCT的比较运算符中使用<> "*Total"是无效的,因为这类直接单元格值比较不支持通配符语法。要实现模糊排除包含"Total"的列,需要借助支持通配符的函数来生成布尔判断条件,以下是两种可行方案:
方案1:使用SEARCH函数实现模糊匹配排除
SEARCH函数可以查找指定文本在单元格中的位置,支持模糊匹配(默认包含任意前缀),结合ISNUMBER和NOT来生成排除条件:
=SUMPRODUCT($KO1363:$LN1363*NOT(ISNUMBER(SEARCH("Total",$KO1362:$LN1362)))*ISFORMULA($KO1363:$LN1363))
- 逻辑说明:
SEARCH("Total",$KO1362:$LN1362)会返回每个单元格中"Total"的起始位置,未找到则返回错误值; ISNUMBER()将上述结果转为布尔值(找到为TRUE,未找到为FALSE);NOT()取反,得到"不包含Total"的判断结果,再与其他条件相乘实现筛选。
如果需要区分大小写,将SEARCH替换为FIND函数即可。
方案2:使用COUNTIF函数生成匹配判断
COUNTIF天然支持通配符,可以直接判断单元格是否匹配*Total模式,再通过等于0来筛选不匹配的列:
=SUMPRODUCT($KO1363:$LN1363*(COUNTIF($KO1362:$LN1362,"*Total")=0)*ISFORMULA($KO1363:$LN1363))
- 逻辑说明:
COUNTIF($KO1362:$LN1362,"*Total")对每个单元格进行模糊匹配,匹配成功返回1,失败返回0; =0筛选出所有不匹配*Total的单元格,以此作为SUMPRODUCT的筛选条件。
额外优化:精确匹配结尾为Total的列
如果需要严格排除以Total结尾的列(避免误排除包含Total但不在结尾的内容),可以用RIGHT函数直接截取末尾字符判断:
=SUMPRODUCT($KO1363:$LN1363*(RIGHT($KO1362:$LN1362,5)<>"Total")*ISFORMULA($KO1363:$LN1363))
- 逻辑说明:
RIGHT(单元格,5)截取单元格最后5个字符("Total"刚好5个字符),直接判断是否等于"Total",实现精准结尾匹配。
内容的提问来源于stack exchange,提问作者Ross Symonds
相关产品推荐
相关产品推荐

