Arrays 数组公式中当前行的COUNTA(谷歌表单)

Arrays 数组公式中当前行的COUNTA(谷歌表单),arrays,excel,count,google-sheets,row,Arrays,Excel,Count,Google Sheets,Row,我有一个固定列数和动态行数的谷歌表 我喜欢使用countA对当前行中具有值(非空)的字段进行计数 我找到了一个,但不明白,也不能让它工作 ArrayFormula(MMULT( LEN(A1:E)>0 ; TRANSPOSE(SIGN(COLUMN(A1:E1))))) Sheet给了我一个错误:“函数MMULT参数1需要数字值。但是'TRUE'是一个布尔值,不能强制为数字。”这个公式对于您的解释来说似乎有点复杂,您不能直接使用这个复制下来的公式吗 =计数A(A1:E1) …但针对您的问

我有一个固定列数和动态行数的谷歌表

我喜欢使用countA对当前行中具有值(非空)的字段进行计数

我找到了一个,但不明白,也不能让它工作

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

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

这个公式对于您的解释来说似乎有点复杂,您不能直接使用这个复制下来的公式吗

=计数A(A1:E1)

…但针对您的问题,您需要更改此部分

LEN(A1:E)>0

…这样它就可以返回数字-试试看

如果(LEN(A1:E)>0;1;0)


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

=ArrayFormula(MMULT( --(LEN(A2:E)>0) , TRANSPOSE(COLUMN(A2:E2)^0)))
另一种方法是使用COUNTIF()

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

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

注意:如果要将输出限制在列A中有值的最后一行,请尝试:

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

谢谢你的回复,可以是任何其他公式,但我不能复制他们只是作为动态行数。表单添加了新行和公式,用于计算发送自动应答器的值。该公式在您调整后生效!谢谢:)我怎样才能把它们也显示在正确的行中?你真的是在Google sheets或excel中这样做的吗?Google sheets-结果都是一行到一行高,还包括冻结的行标题。其他列使用:=ARRAYFORMULA(如果(行(A:A)=1,“名称”,公式),但这不起作用。感谢Barry,公式与JPV提供的标题结合使用。感谢JPV,我使用了第一个版本,包括标题,它工作得非常好!其他两个也做得很好。:)我试图用SUMIF替换数组中的COUNTIF来增加字段的值,但没有得到正确的结果,有什么提示吗?嗨,李嘉图,我已经更新了我的答案。看看它是否对你有用?哦,非常强大的excel wizzard-谢谢你的帮助=)也许你对这个问题也有想法&
=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))))
=ArrayFormula(if(row(A:A)=1, "Header", MMULT(if(A1:E<>"", A1:E,0), transpose(column(A1:E1)^0))))
=ArrayFormula(if(row(A:A)=1, "Header", sumif(IF(COLUMN(A1:E1),ROW(A1:A)),ROW(A1:A),A1:E)))
=ArrayFormula(if(row(A:A)=1, "Header", IF(LEN(A1:A), MMULT(if(A1:E<>"", A1:E,0), transpose(column(A1:E1)^0)),)))
=ArrayFormula(if(row(A:A)=1, "Header", if(len(A1:A), sumif(IF(COLUMN(A1:E1),ROW(A1:A)),ROW(A1:A),A1:E),)))