Arrays Excel COUNT()与带有数组的COUNTIF()

Arrays Excel COUNT()与带有数组的COUNTIF(),arrays,excel,Arrays,Excel,我认为这应该是一个直截了当的问题,但出于某种原因,我在任何地方都找不到解决方案 我在excel中有一个很长的公式,它最终返回一个由四项组成的数组,即{1,2,0,0}。我想数一数结果中有多少大于零 当我对这个结果使用=COUNT({1,2,0,0})时,我得到了预期的答案4。但是当我尝试使用=COUNTIF({1,2,0,0},“>0”)时,它会弹出一个错误,指出我的公式有问题 我做错什么了吗?COUNTIF()是否有等效的数组?似乎COUNTIF函数只在范围上工作,而COUNT函数可以使用数组

我认为这应该是一个直截了当的问题,但出于某种原因,我在任何地方都找不到解决方案

我在excel中有一个很长的公式,它最终返回一个由四项组成的数组,即{1,2,0,0}。我想数一数结果中有多少大于零

当我对这个结果使用
=COUNT({1,2,0,0})
时,我得到了预期的答案4。但是当我尝试使用
=COUNTIF({1,2,0,0},“>0”)
时,它会弹出一个错误,指出我的公式有问题


我做错什么了吗?COUNTIF()是否有等效的数组?

似乎
COUNTIF
函数只在范围上工作,而
COUNT
函数可以使用数组

尝试一下SUMPRODUCT。下面是我用来测试公式的示例的稍微扩展形式。它基本上检查数组中的每个值是否大于0,如果大于0,则为其赋值1。然后
SUMPRODUCT
将所有的1相加,得出大于0的值的总数

=SUMPRODUCT(IF({1,0,3,0,5,0,0,6,9,9,0,7,0}>0,1,0))

实现这一点最简洁的方法可能是使用
INT
函数将验证检查返回的
TRUE
FALSE
值转换为一个数字
TRUE
转换为
1
FALSE
转换为
0
。然后对1和0进行求和

=SUM(INT({1,2,0,0}>0))
或者正如Barry Houdini指出的,您可以使用以下命令强制布尔值为int:

=SUM(({1,2,0,0}>0)*1)
或:


这似乎可以做到,谢谢@tittaenälg-这是一个解决问题的聪明方法。为什么你选择了
SUMPRODUCT
,而不是简单的
SUM
,我认为这在这里也适用?有什么原因吗?@HAWK我知道
SUMPRODUCT
接受数组作为输入,所以我默认了。你说得对,
SUM
看起来得到的结果是一样的,所以这看起来同样正确,并且节省了一些输入。SUMPRODUCT有时比SUM“更好”,因为你可能不需要“数组条目”,这取决于你如何使用SUMPRODUCT,但是,如果你的冗长公式需要数组条目,那么SUM可能更可取。事实上,你甚至不需要INT这样的函数。你可以使用+0或*1这样的“coercer”,例如
=SUM(({1,2,0,0}>0)+0)
@barryhoudini。我经常使用*1方法。在这种情况下,使用
INT
实际上对我来说是不典型的,所以我不确定为什么要这样做。
=SUM(({1,2,0,0}>0)+0)