提问者:小点点

使用Google Sheets上的数组公式逐行计数迭代


我正在尝试迭代一个COUNTIF公式,该公式计算每行中包含大于4的数字的单元格数。我正在尝试使用ArrayFormula来完成此操作,但它不起作用。

不幸的是,它统计了整个范围B2:G39中所有符合条件的单元格,导致K列的每一行中输入了26个,而不是逐行计数,即单元格数

这是公式

=ARRAY_CONSTRAIN(arrayformula( if( row(H:H)=1, "Number of cells >4",COUNTIF(A2:G39,">4"))),39,1)

这是一个电子表格,包括样本数据和我的公式。


共2个答案

匿名用户

尝试在单元格 K2 中输入以下内容:

=ARRAYFORMULA(IF(ISBLANK(A2:A),IFERROR(1/0),MMULT(SIGN(A2:G>4),SIGN(TRANSPOSE(A2:G2)))))

通过将数据转换为矩阵形式,您可以将MMULT和SIGN函数与ARRAYFORMULA一起使用,以实现您要查找的行的条件计数。

匿名用户

示例文件

我发现mmult很慢,可能会导致你的文件加载时间很长。我建议使用lenjoin(带查询)代替(不测试速度):

={"RegexReplace-Len..."; ArrayFormula(LEN(REGEXREPLACE(TRANSPOSE(QUERY(TRANSPOSE(FILTER(--(A2:P>5),A2:A<>"")),,100500)),"[ 0]", "")))}

这里还有一个JPV的解决方案:

=filter(COUNTIF(IF(A2:P>5, ROW(A2:A)), ROW(A2:A)), A2:A<>"")

A2:P更改为您的范围,A2:A