繁体   English   中英

COUNTA在数组公式中的当前行(Google表格)

[英]COUNTA in current row in an array formula (Google Sheets)

我有一张包含固定列数和动态行的Google表格。

我喜欢使用countA来计算当前行中具有值(非空白)的字段。

我在这里找到了一个公式,但是不理解它,也不能让它工作。

ArrayFormula(MMULT( LEN(A1:E)>0 ; TRANSPOSE(SIGN(COLUMN(A1:E1)))))

Sheet给出了错误:“函数MMULT参数1需要数字值。但是'TRUE'是一个布尔值,不能强制转换为数字。”

如果您将LEN(A1:E)> 0返回的布尔值(true或false)转换为数字(1或0),则公式应该有效,正如Barry已经提到的那样。 这可以通过将LEN()函数的输出包装在N函数中或者在前面加上“ - ”来非常容易地完成。 因此,假设您的数据从第2行开始,请查看是否有效:

=ArrayFormula(MMULT( --(LEN(A2:E)>0) , TRANSPOSE(COLUMN(A2:E2)^0)))

另一种方法是使用COUNTIF()

=ArrayFormula(COUNTIF(IF(A2:E<>"", row(A2:A),),row(A2:A)))

甚至可能组合应该起作用:

=ArrayFormula(MMULT( --(A2:E<>"") , TRANSPOSE(COLUMN(A2:E1)^0)))

如果您还想包含标题行,请尝试:

=ArrayFormula(if(row(A:A)=1, "Header", MMULT( --(LEN(A:E)>0) , TRANSPOSE(COLUMN(A1:E1)^0))))

要么

 =ArrayFormula(if(row(A:A)=1, "Header", MMULT( --(A:E<>"") , TRANSPOSE(COLUMN(A1:E1)^0))))

要么

=ArrayFormula(if(row(A:A)=1, "Header", COUNTIF(IF(not(isblank(A:E)), row(A:A),),row(A:A))))

编辑:(在评论中的新问题后)

如果要对值求和,也可以使用MMULT()进行求和:

=ArrayFormula(if(row(A:A)=1, "Header", MMULT(if(A1:E<>"", A1:E,0), transpose(column(A1:E1)^0))))

或使用sumif:

=ArrayFormula(if(row(A:A)=1, "Header", sumif(IF(COLUMN(A1:E1),ROW(A1:A)),ROW(A1:A),A1:E)))

注意:如果要将输出限制为让我们说col A中具有值的最后一行,请尝试:

=ArrayFormula(if(row(A:A)=1, "Header", IF(LEN(A1:A), MMULT(if(A1:E<>"", A1:E,0), transpose(column(A1:E1)^0)),)))

或者,再次使用sumif()

=ArrayFormula(if(row(A:A)=1, "Header", if(len(A1:A), sumif(IF(COLUMN(A1:E1),ROW(A1:A)),ROW(A1:A),A1:E),)))

对于你的解释,这个公式似乎有点复杂,你不能只使用这个公式复制下来

= COUNTA(A1:E1)

...但是专门针对您的问题,您需要更改此部分

LEN(A1:E)> 0

......所以它返回数字 - 试试

IF(LEN(A1:E)> 0; 1; 0)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM