Excel公式求助:忽略空白单元格统计两类分数出现情况的次数
Excel公式求助:忽略空白单元格统计两类分数出现情况的次数
嗨,我来帮你搞定这个Excel自动化统计的问题!针对你提到的两个需求,我整理了适配大样本量的公式,完全能忽略空白单元格,直接套用就行:
需求1:统计「当天所有非空白分数都是1或2」的天数
假设你的数据结构是:每个受试者占一行,Day1的分数在B2:D2(每天3个分数单元格),Day2在E2:G2,以此类推直到Day21。你可以把下面的公式放到对应受试者的结果列(比如AA2):
=SUMPRODUCT(--(SUMPRODUCT(--(OFFSET(B2,0,(ROW($1:$21)-1)*3,1,3)={1,2}))=COUNTA(OFFSET(B2,0,(ROW($1:$21)-1)*3,1,3))))
公式说明:
OFFSET(B2,0,(ROW($1:$21)-1)*3,1,3):定位到每一天的分数单元格范围,其中的3是你每天的分数列数,一定要根据自己的实际表格调整(比如每天2列就改成2)SUMPRODUCT(--(范围={1,2})):统计当天所有1和2的数量COUNTA(范围):统计当天的非空白单元格总数- 当两者相等时,说明当天所有非空白分数都是1或2,
--把这个判断结果转成1/0,最后外层SUMPRODUCT求和就是符合条件的天数
如果你的Excel是365/2021版本,用动态数组公式更简洁:
=SUM(--(BYCOL(CHOOSECOLS(B2:ZZ2,SEQUENCE(21,,1,3)),LAMBDA(x,SUM(--(x={1,2}))=COUNTA(x)))))
需求2:统计「连续两天的分数范围中存在1或2」的次数
21天共有20组连续两天(Day1&Day2、Day2&Day3…Day20&Day21),下面的公式可以统计其中至少包含一个1或2的组数量:
=SUMPRODUCT(--(SUMPRODUCT(--(OFFSET(B2,0,(ROW($1:$20)-1)*3,1,6)={1,2}))>0))
公式说明:
OFFSET(B2,0,(ROW($1:$20)-1)*3,1,6):定位到每组连续两天的合并范围,6是2*每天分数列数(比如每天2列就改成4)SUMPRODUCT(--(范围={1,2}))>0:判断这组连续两天里是否存在1或2- 同样用
--转成1/0后求和,得到符合条件的连续天数组合数
Excel 365版本的简化公式:
=SUM(--(BYCOL(CHOOSECOLS(B2:ZZ2,SEQUENCE(20,,1,3)),LAMBDA(x,SUM(--(TOROW(x)={1,2}))>0))))
通用注意事项:
- 把公式里的
B2:ZZ2替换成你实际的受试者分数所在的行范围 - 所有涉及到
3的地方,都要改成你每天的分数列数,别直接照搬哦 - 旧版本Excel(2019及以前)建议用
SUMPRODUCT版本,不需要按Ctrl+Shift+Enter,直接回车就行
备注:内容来源于stack exchange,提问作者Elemen00




