Google Sheets多列每行计数异常:公式返回全局总数而非行结果
解决Google Sheets每行统计多列计数的问题
嘿,我完全懂你现在的困扰——你写的公式之所以会每行都返回同一个总数,是因为COUNT(B3:B,C3:C,...)这种写法是把B到H所有列的单元格合并成一个大区域来统计,而不是逐行单独计算。所以它算出的是整个范围里符合条件的单元格总数,自然每行都显示同一个值啦。
下面给你两种靠谱的解决方法,按需选择:
方法1:用BYROW(直观易懂,适合新版Google Sheets)
这个函数专门用来逐行处理数据,逻辑非常清晰:
=BYROW(B3:H, LAMBDA(current_row, IF(OFFSET(current_row, 0, 7) > 0, COUNTA(current_row), "")))
- 细节说明:
BYROW(B3:H, LAMBDA(current_row, ...)):遍历B3:H的每一行,把当前行的数据存到current_row变量里OFFSET(current_row, 0, 7):取当前行对应的I列数据(因为B到H是7列,向右偏移7列就是I列)COUNTA(current_row):统计当前行里非空单元格的数量;如果你要统计的是大于0的单元格,把COUNTA换成COUNTIF(current_row, ">0")就行
方法2:用ARRAYFORMULA+MMULT(兼容旧版,纯数组公式)
如果你习惯用数组公式,或者你的Sheet版本不支持BYROW,可以用这个:
=ARRAYFORMULA(IF(I3:I>0, MMULT(N(B3:H<>""), SEQUENCE(COLUMNS(B3:H), 1, 1, 0)), ""))
- 细节说明:
N(B3:H<>""):把B到H里的非空单元格转成1,空单元格转成0MMULT(..., SEQUENCE(...)):用矩阵乘法把每行的1加起来,得到每行的非空数量- 同样,如果要统计大于0的单元格,把
B3:H<>""改成B3:H>0
用这两个公式就能得到你预期的「3,1,1」结果啦!
内容的提问来源于stack exchange,提问作者TC76
相关产品推荐
相关产品推荐

