You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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,空单元格转成0
    • MMULT(..., SEQUENCE(...)):用矩阵乘法把每行的1加起来,得到每行的非空数量
    • 同样,如果要统计大于0的单元格,把B3:H<>""改成B3:H>0

用这两个公式就能得到你预期的「3,1,1」结果啦!

内容的提问来源于stack exchange,提问作者TC76

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 09:25:32