Excel中基于单列条件与多列求和结果统计符合条件的行数
解决Excel中多条件行数统计(含多列求和判断)的高效方法
嗨,我完全懂你现在的麻烦——当C到G这类列数较多时,用COUNTIFS逐个加“等于0”的条件不仅公式超长,后续列数变动还得反复修改,太折腾了。下面给你几个更高效的解决方案:
方法1:兼容性拉满的SUMPRODUCT函数(适用于所有Excel版本)
这个方法不需要依赖新功能,不管是老版本还是新版Excel都能顺畅运行:
=SUMPRODUCT((A:A=1)*(B:B>17)*(MMULT(--(C:G=0),ROW(C:G)^0)=COLUMNS(C:G)))
拆解下公式逻辑:
(A:A=1):判断A列是否为“有效”(即等于1),返回逻辑值,相乘时自动转为1(符合)或0(不符合)(B:B>17):判断B列年龄是否超过17岁,同样转为1/0MMULT(--(C:G=0),ROW(C:G)^0)=COLUMNS(C:G):--(C:G=0):把C到G列的每个单元格是否为0的逻辑值转为1/0MMULT(...,ROW(C:G)^0):用矩阵乘法快速计算每行C到G列中0的总数=COLUMNS(C:G):判断总数是否等于列数(比如C到G共5列,等于5就说明该行全是0)
SUMPRODUCT会把这三个条件的结果相乘,最后求和,得到的就是同时满足所有条件的行数。
方法2:Excel 365/2021专属的FILTER+ROWS组合(更直观易懂)
如果你用的是Excel 365或2021版本,动态数组函数能让公式逻辑更清晰:
=ROWS(FILTER(A:A,(A:A=1)*(B:B>17)*(SUM(C:G,1)=0)))
SUM(C:G,1):按行对C到G列求和,参数1指定按行计算FILTER(A:A, ...):筛选出同时满足三个条件的行ROWS(...):统计筛选结果的行数,就是你要的数量
为什么不推荐原来的COUNTIFS写法?
原来的公式=COUNTIFS(A:A,1,B:B,">17",C:C,0,D:D,0,E:E,0,F:F,0,G:G,0)虽然能实现功能,但列数越多公式越长,一旦后续新增或删除列,就得手动修改所有对应条件,维护成本太高。
内容的提问来源于stack exchange,提问作者Tango4




