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

结合ArrayFormula与COUNTIF按行统计指定分类列0值的方法

需求说明
  • 基础目标:配合ArrayFormula实现逐行批量统计指定范围内的0值数量,替代单格公式=COUNTIF($C6:$CD6,"0"),无需手动向下拖拽填充。
  • 已有可复用逻辑:
    1. 固定列范围逐行统计0值的数组公式,通过MMULT实现矩阵计算完成逐行计数:
    =ArrayFormula(IF(ISBLANK($A6:$A),,INDEX(MMULT(1*(IF($CH6:$DA="", "×", $CH6:$DA)=0), SEQUENCE(COLUMNS($CH6:$DA), 1, 1, )))))
    
    1. 按表头(第2行)值为Alphabet筛选目标列,再逐行求和的数组公式,通过条件判断动态选中符合表头规则的列:
    =ArrayFormula(IF(ISBLANK($A5:$A),,SUMIF(IF(($C$2:$CD$2)="Alphabet",ROW($C$5:$C)),ROW($C5:$CD),$C5:$CD)))
    
  • 最终目标:融合上述两类逻辑,先筛选出表头为Alphabet的目标列,再逐行统计这些列中的0值数量,支持数组自动批量计算全量行结果。
实现公式

将公式放在结果列与数据起始行对齐的单元格(例如数据从第6行开始,就放在结果列第6行),输入后会自动向下计算所有行的结果:

=ArrayFormula(
  IF(
    ISBLANK($A6:$A),
    ,
    MMULT(
      1*(
        ($C$2:$CD$2="Alphabet")
        *(IF($C6:$CD="", "×", $C6:$CD)=0)
      ),
      SEQUENCE(COLUMNS($C$2:$CD$2), 1, 1, 0)
    )
  )
)
公式逻辑说明
  • 外层IF(ISBLANK($A6:$A),,...)和已有写法逻辑一致:A列对应行无内容时不返回计算结果,避免无数据行生成多余0值。
  • 内层条件判断部分同时校验两个规则:一是当前列的表头值为Alphabet,二是当前单元格值为0(提前把空单元格替换为×,避免空值被误判为0),两个条件同时满足时返回1,否则返回0,最终生成和数据范围尺寸一致的0/1矩阵。
  • MMULT部分将0/1矩阵与等长的全1列向量做矩阵乘法,等价于对每行的1值求和,直接得到每行符合筛选规则的列中0值的总数量,无需额外嵌套INDEX即可直接返回数组结果。
可选调整

如果你的数据范围中空单元格不需要排除、可以直接判定为非0值,可以把内层的IF($C6:$CD="", "×", $C6:$CD)=0简化为$C6:$CD=0,公式计算效率会更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 00:24:26