根据跨多个列的条件求和行

我GOOGLE了几个小时,无法find我需要/想要的解决scheme。 我有一个Excel工作表,我想根据两列之一应该有一个特定的值的标准,在一列中的值。 例如

ABC 1 4 20 7 2 5 100 3 3 100 21 4 4 15 21 4 5 21 24 8 

假设A和B中的至less一个包含小于或等于20的值,我想对C中的值求和。让我们假设A1:A5被命名为A,B1:B5被命名为B,C1:C5被命名为C(为简单起见)。 我努力了:

 ={SUMPRODUCT(C,((A<=20)+(C<=20)))} 

这给了我两行匹配的行两次,和

 ={SUMPRODUCT(C,((A<=20)*(C<=20)))} 

这给我只有两列匹配的行

到目前为止,我已经解决了添加A和B的最低值的列D的解决scheme,但它让我感到非常迷惑,所以我不能用公式来做。

任何帮助将不胜感激,所以提前感谢。 我在Google上search时发现的是“同一列的多个标准”问题。

您的问题,这是在这个公式中“总结两次”

 ={SUMPRODUCT(C,((A<=20)+(C<=20)))} 

是由于加上第一个TRUE加上第二个TRUE为2,实际上并不是两次加和,因为对于任何一行,如果只满足一个条件,它只会计算一次该行。

解决方法是将1或2转换为1,使用IF:

 ={SUMPRODUCT(C,IF((A<=20)+(C<=20))>0, 1, 0)} 

那样,C列中的每个值只会被计算在最多一次。

谢谢。 这样可行。 find另一个有效的工具后,我发现excel不像我学习离散math那样处理1 + 1 = 1,但是正如你所说的那样,计数两个结果。 试着用:

 {=SUM(IF((A<=20)+(B<=20);C;0))} 

但我更喜欢你的

在这个网站之后,你可以像这样build立你的SUMPRODUCT()公式:

 =SUMPRODUCT(C,SIGN((A<=20)+(C<=20))) 

所以,而不是一个嵌套的IF()你控制你的条件与SIGN()函数。

心连心

如果您打算使用大量数据,那么最好使用数组公式:

 {=SUM(IF((A1:A5<=20)+(B1:B5<=20),C1:C5,0))} 

显然调整范围,以适应数据集,但是如果整个每一列是公式的一部分,那么你可以简单地调整到:

 {=SUM(IF((A:A<=20)+(B:B<=20),C:C,0))} 

这将对A,B和C列中的所有数据行执行计算。 在任何一个示例中,都要记得按下Ctrl + Shift + Enter来触发数组公式(而不是input{和})。