不规则行列分组表格中统计含数字列数的Excel公式需求
解决Excel分组矩形区域内含数字列的统计问题
首先明确你的需求:你有一个按**行(颜色分组)和列(组别a/b分组)**划分的大型表格,每组的行/列数量不固定,需要统计每个行+列类别组合的矩形区域里,至少包含一个数字的列的数量。
针对你已经写出的=SUMPRODUCT(--($B$2:$H...开头,我帮你补全并优化成通用公式,分两种情况适配不同Excel版本:
兼容所有Excel版本的公式(基于SUMPRODUCT)
假设你的行分组标识在A列(比如A2开始是颜色),列分组标识在第1行(比如B1开始是组别a/b),要统计某颜色+某组别的区域,公式可以写成:
=SUMPRODUCT(--(MMULT(--(ISNUMBER(INDEX($B:$H,MATCH(目标颜色,$A:$A,0),MATCH(目标组别,$1:$1,0)):INDEX($B:$H,MATCH(目标颜色,$A:$A,1),MATCH(目标组别,$1:$1,1))),ROW(INDIRECT("1:"&ROWS(INDEX($B:$H,MATCH(目标颜色,$A:$A,0),MATCH(目标组别,$1:$1,0)):INDEX($B:$H,MATCH(目标颜色,$A:$A,1),MATCH(目标组别,$1:$1,1)))))^0)>0))
公式拆解(以统计"红色"+"a"组为例):
INDEX(...):INDEX(...):精准定位到红色组行范围 + a组列范围的矩形区域,不用手动选固定单元格,自动适配分组行数/列数变化ISNUMBER(...):把区域内的数字单元格标记为TRUE,非数字标记为FALSEMMULT(...,ROW(...^0)):对每一列的TRUE/FALSE求和(转为1/0后相加),只要列内有至少一个数字,求和结果就会>0--(...)>0:把“列是否含数字”的判断转为1(是)或0(否)SUMPRODUCT:对这些1/0求和,最终得到该区域内含数字的列总数
Excel 365/2021更简洁的写法(用BYCOL+LAMBDA)
如果你的Excel支持动态数组函数,可以用更易读的公式:
=COUNT(BYCOL(INDEX($B:$H,MATCH(目标颜色,$A:$A,0),MATCH(目标组别,$1:$1,0)):INDEX($B:$H,MATCH(目标颜色,$A:$A,1),MATCH(目标组别,$1:$1,1)),LAMBDA(col,IF(SUM(--ISNUMBER(col))>0,1,0))))
这个公式逻辑更直白:用BYCOL遍历目标区域的每一列,判断列内是否有数字,最后统计符合条件的列数。
内容的提问来源于stack exchange,提问作者eli-k
相关产品推荐
相关产品推荐

