将布尔值的多步总和转换为单个公式

clm*_*mno 10 worksheet-function microsoft-excel libreoffice-calc

我有一些传感器读数,我正在检查这些值是否在可接受的范围内。

为此,我使用 anIF来检查值是否为><计算的(平均值)值。结果存储在相应的列中。最后,我对结果求和以获得超出范围(即高于平均值)的数量。

例如,Ax与 进行比较MeanAx获得10进入If value is outside accepted bounds. Ax

图 1

那么的总和If value is outside accepted boundsAx执行以获得Number of values outside bound. Ax

图 2,求和

问题
如何将其转换为单个公式?

rob*_*CTS 11

您所追求的功能是COUNTIF()

工作表截图

输入以下公式G3并按 ctrl-enter/copy-paste/fill-right into G3:I3

=COUNTIF(A3:A8,">"&D3)
Run Code Online (Sandbox Code Playgroud)

COUNTIF() 根据第二个参数中的条件检查第一个参数中的每个值,并计算满足的次数。


使用COUNTIF()是最简单和最好的解决方案。

当然,您可以使用更复杂/更难理解的公式,例如

=SUMPRODUCT(--(A3:A8>D3))
Run Code Online (Sandbox Code Playgroud)

或者一个数组输入一个像

{=SUM(--(A3:A8>D3))}
Run Code Online (Sandbox Code Playgroud)

或者甚至是那些不必要的复杂版本。

但是,在这种特殊情况下使用任何这些都没有任何好处。


事实上,由于您似乎对减少辅助列的数量感兴趣,因此更好的整体解决方案是也免除 Mean 辅助列:

工作表截图

输入以下公式D3并按 ctrl-enter/copy-paste/fill-right into D3:F3

=COUNTIF(A3:A8,">"&AVERAGE(A3:A8))
Run Code Online (Sandbox Code Playgroud)

(是的,这个公式也可以通过将其转换为=SUMPRODUCT(--(A3:A8>AVERAGE(A3:A8)))或来使初学者更难理解{=SUM(--(A3:A8>AVERAGE(A3:A8)))}。)