如何用ARRAYFORMULA()将横向COUNTIF()纵向扩展至整列?
Google Sheets 批量逐行 COUNTIF 统计方案
直接用ARRAYFORMULA(COUNTIF(A1:A:D1:D))无法实现逐行统计,原因是这个写法会把A-D列的所有单元格当成一个整体范围,而非逐行对应处理。下面提供两种可行方案:
方案一:用 BYROW 函数(新版 Sheets 支持)
BYROW 可以遍历指定区域的每一行,对每行单独执行 COUNTIF 逻辑,自动生成纵向数组结果:
=BYROW(A1:D, LAMBDA(row, COUNTIF(row, "你要统计的内容")))
- 把
A1:D替换成你的目标数据区域; - 把
"你要统计的内容"替换成实际要统计的数值、文本或条件(比如统计非空可以改成"<>")。
例如,要统计每行中"完成"的数量,公式就是:
=BYROW(A1:D, LAMBDA(row, COUNTIF(row, "完成")))
方案二:用 MMULT 函数(兼容旧版 Sheets)
如果你的 Sheets 版本不支持 BYROW,可以用 MMULT 实现数组统计,以统计特定值为例:
=ARRAYFORMULA(MMULT(--(A1:D="你要统计的内容"), SEQUENCE(COLUMNS(A1:D), 1, 1, 0)))
--(A1:D="你要统计的内容")会把符合条件的单元格转为1,不符合的转为0;SEQUENCE(COLUMNS(A1:D), 1, 1, 0)生成一个和列数相同的纵向数组,用来和前面的0/1矩阵做矩阵乘法,得到每行的总和(即符合条件的数量)。
如果是统计每行非空单元格数量,简化版公式:
=ARRAYFORMULA(MMULT(--(A1:D<>""), SEQUENCE(COLUMNS(A1:D), 1, 1, 0)))
内容的提问来源于stack exchange,提问作者stackunderflow
相关产品推荐
相关产品推荐

