基于星级评分条件统计评论列中特定单词的出现次数
基于星级评分条件统计评论列中特定单词的出现次数
我明白你现在的需求啦——要根据星级评分的条件(比如星级低于4星),统计评论列里特定单词的总出现次数,之前的公式能计算所有评论里的单词总数,但加上星级条件就卡壳了对吧?这是因为原来的数组运算逻辑和SUMIF的结构不太适配,咱们换用SUMPRODUCT函数就能完美解决这个问题。
核心解决方案公式
假设你的星级评分在H2:H190列,评论内容在G2:G190列,要统计word1和word2在星级小于4星的评论里的总出现次数,可以用这个公式:
=SUMPRODUCT((H2:H190<4)*((LEN(G2:G190)-LEN(SUBSTITUTE(G2:G190,"word1","")))/LEN("word1")+(LEN(G2:G190)-LEN(SUBSTITUTE(G2:G190,"word2","")))/LEN("word2")))
公式逻辑拆解
咱们来拆解一下这个公式的各个部分,方便你理解和修改:
(H2:H190<4):这是你的条件判断,会逐行检查星级是否小于4,满足条件返回TRUE(在运算中会被转为1),不满足返回FALSE(转为0)。(LEN(G2:G190)-LEN(SUBSTITUTE(G2:G190,"word1","")))/LEN("word1"):这部分就是你原来用的单词计数逻辑——通过替换掉目标单词后计算长度差,再除以单词本身的长度,得到每行中word1的出现次数。同理,后半部分是计算word2的出现次数,两者相加就是每行两个单词的总次数。SUMPRODUCT会把每行的条件判断结果和该行的单词总次数相乘,最后把所有行的结果加起来,这样就只统计了满足星级条件的评论里的单词次数。
其他可选方案(用SUMIF的思路)
如果你坚持想用SUMIF,可以把两个单词的统计分开,再相加,不过需要注意这是数组公式,旧版Excel需要按Ctrl+Shift+Enter确认:
=SUM(SUMIF(H2:H190,"<4",(LEN(G2:G190)-LEN(SUBSTITUTE(G2:G190,"word1","")))/LEN("word1"))) + SUM(SUMIF(H2:H190,"<4",(LEN(G2:G190)-LEN(SUBSTITUTE(G2:G190,"word2","")))/LEN("word2")))
不过相比之下,SUMPRODUCT不需要数组回车,兼容性更好,写法也更简洁。
小提示
- 如果需要区分大小写统计单词(比如区分"Word1"和"word1"),可以把
SUBSTITUTE替换成大小写敏感的判断逻辑,比如用FIND函数结合数组运算,不过一般评论统计不需要这么严格,默认的不区分大小写已经够用啦。 - 记得确保评论列和星级列的单元格范围完全对应(比如都是从第2行到第190行),避免出现统计错误。
备注:内容来源于stack exchange,提问作者Kaci Collins
相关产品推荐
相关产品推荐

