如何在COUNTIFS函数中嵌套使用SUBSTITUTE函数?
无辅助列统计含拼写变体项目的提及次数
需求:自动统计列表中某项目的提及次数,项目存在拼写变体(可能包含/不包含短横线、空格),需用SUBSTITUTE替换空格和短横线后比对,且不使用辅助列。
之前尝试的LET写法无效,核心原因是COUNTIFS不支持将SUBSTITUTE生成的内存数组作为条件区域,它要求条件参数必须是单元格区域。以下是两种可行的实现方式:
方法1:使用SUMPRODUCT(简洁高效)
=SUMPRODUCT( --($B$3:$B$102=$A$105), --(SUBSTITUTE(SUBSTITUTE($J$3:$J$102,"-","")," ","")=SUBSTITUTE(SUBSTITUTE(A108,"-","")," ","")) )
- 逻辑:先用两次SUBSTITUTE分别去掉项目名称区域和目标项目中的短横线与空格,再比对是否一致;同时判断团队名称是否匹配。
--用于将布尔值(TRUE/FALSE)转换为数值1/0,SUMPRODUCT会将两个条件的结果相乘后求和,最终得到符合双重条件的次数。
方法2:使用LET+BYROW(结构更清晰)
=LET( teamName, $A$105, teamRange, $B$3:$B$102, itemRange, $J$3:$J$102, targetItem, SUBSTITUTE(SUBSTITUTE(A108,"-","")," ",""), processedItems, SUBSTITUTE(SUBSTITUTE(itemRange,"-","")," ",""), SUM(BYROW(HSTACK(teamRange, processedItems), LAMBDA(row, IF(INDEX(row,1)=teamName AND INDEX(row,2)=targetItem, 1, 0)))) )
- 逻辑:先通过LET定义变量,预处理目标项目和所有项目的文本(去掉短横线和空格);再用BYROW遍历每行数据,判断是否同时满足团队名称匹配和项目文本匹配,返回1或0;最后SUM求和得到总次数。
内容的提问来源于stack exchange,提问作者vicky_molokh
相关产品推荐
相关产品推荐

