Excel动态公式需求:统计三列均为空或0的记录数
解决方案:动态统计三列均为空或0的记录数
假设前提
A列为有效记录标识列(非空即为有效行),Score1、Score2、Score3分别对应B、C、D列。以下公式可根据A列非空单元格数量自动扩展检查范围。
适用于Excel 365/2021(支持动态数组)
使用BYROW+LAMBDA实现逐行判断,动态范围自动适配:
=SUM(--(BYROW(B1:INDEX(B:D,COUNTA(A:A)),LAMBDA(row,AND(IF(row="",TRUE,row=0))))))
B1:INDEX(B:D,COUNTA(A:A)):自动生成从B1到D列第N行的区域(N为A列非空单元格总数)AND(IF(row="",TRUE,row=0)):判断该行三个单元格是否均为空或等于0--将布尔结果转为1/0,SUM统计符合条件的总行数
适用于旧版Excel(不支持动态数组)
方法1:SUMPRODUCT公式(无需按三键回车)
=SUMPRODUCT(--(A1:INDEX(A:A,COUNTA(A:A))<>""),--((B1:INDEX(B:B,COUNTA(A:A))=0)+(B1:INDEX(B:B,COUNTA(A:A))="")=1),--((C1:INDEX(C:C,COUNTA(A:A))=0)+(C1:INDEX(C:C,COUNTA(A:A))="")=1),--((D1:INDEX(D:D,COUNTA(A:A))=0)+(D1:INDEX(D:D,COUNTA(A:A))="")=1))
--(A:A区域<>""):筛选A列非空的有效行- 每个
--((列=0)+(列="")=1):判断对应Score列单元格为空或0 SUMPRODUCT将所有条件相乘,统计同时满足的行数
方法2:数组公式(需按Ctrl+Shift+Enter回车)
=SUM(IF(ISNUMBER(MATCH(A1:INDEX(A:A,COUNTA(A:A)),"*",0)),--((B1:INDEX(B:B,COUNTA(A:A))=0)+(B1:INDEX(B:B,COUNTA(A:A))="")>0)*((C1:INDEX(C:C,COUNTA(A:A))=0)+(C1:INDEX(C:C,COUNTA(A:A))="")>0)*((D1:INDEX(D:D,COUNTA(A:A))=0)+(D1:INDEX(D:D,COUNTA(A:A))="")>0),0))
注意事项
- 无论Score列的空值是手动输入的空白,还是公式返回的空文本(
=""),公式均能正常识别 COUNTA(A:A)会统计A列所有非空单元格,确保检查范围自动跟随A列有效记录数量扩展
内容的提问来源于stack exchange,提问作者madQuestions
相关产品推荐
相关产品推荐

