Excel COUNTIFS,其中条件是特定于行的

Excel COUNTIFS,其中条件是特定于行的

我正在尝试对以下数据执行 COUNTIF,其中条件是特定于行的,并且不链接到特定的值或单元格。

例如,在下面的例子中,我尝试计算 B 列是 A 列两倍的行数。

A
1 5
2 6
5 3

我假设正确的语法是“=COUNTIF(B:B, "="&A:A *2),以便它检查每行中的 B 列是否是 A 列的两倍,但我总是得到 0。正确的结果是 2。

似乎只允许使用离散的#或单个单元格引用(例如“=”&A2),但我希望检查的条件特定于每一行。

是否有其他函数或语法错误阻止我执行此操作?谢谢

答案1

使用SUMPRODUCT

=SUMPRODUCT(--(A1:A4*2=B1:B4))

在此处输入图片描述

注意:在您的样本数据中,结果应该为零,我添加了一行以获得非零结果

答案2

您的示例数据中没有(行)实例,其中 B 列的值是 A 中的值的两倍

=SUM(IF(B1:B3 =A1:A3*2,1,0))因为 3D/数组公式会为您完成此操作。

在 LibreOffice 中,数组公式必须用CTRL++输入;我不太确定在 Excel 中是否也一样SHIFTENTER(并且没有办法尝试)

答案3

原始公式的唯一问题是需要以某种方式求和。一种方法是这样cybernetic.nomad做。另一种方法是简单地将发帖人的公式包含在SUM()函数中。

还有其他方法可以得到 1 和 0 的列表,以判断 B 列值是否满足条件。Hannu坦率地说,这是一个我“首选”的方法,因为我从未发现该函数系列有很多用处COUNT。(我知道我的局限性,因为在过去八年左右的时间里,我浏览 Excel 帮助网站,发现了许多“标签外”用途,而且它们是获得我一直使用的结果的更直接的方法IF()。)

但是,还有其他方法可以做到这一点,其中一种方法是针对其工作中未使用的每个值进行简单的 TRUE/FALSE 测试IF(),因此在大型数据集上可能会更快:

=SUM(  (B1:B4 = A1:A4*2)  *1)

这只是简单的比较,生成一个 TRUE/FALSE 结果数组。然后可以使用--运算符,如cybernetic.nomad所示,或如*1我在此处所示。这会将文字 TRUE/FALSE 数组元素转换为 1/0 数组元素,SUM()然后允许添加它们。(我更喜欢,*1因为如果表达式中有自己的乘法,则很容易不在表达式末尾添加,因为乘法(或如果使用OR而不是 ,则使用AND)足以进行转换。当然,两者都很好用,对于许多人来说,--似乎更清晰,因此会比 更容易维护*1。我们人类就是这样,每个人都有最适合自己的。)

不过,该COUNT系列直接产生 1/0,因此这是一个不错的值。然而,当像这样将其应用于一定范围时,仍然需要总结一些东西。

相关内容