根据多个列的条件对行进行求和

时间:2015-06-14 11:23:14

标签: excel excel-formula array-formulas

我用谷歌搜索了几个小时,无法找到我需要/想要的解决方案。我有一个Excel工作表,我想根据两个列中的任何一个应该具有特定值的标准对一列中的值求和。例如

    A     B     C
1   4    20     7
2   5   100     3
3  100   21     4
4   15   21     4
5   21   24     8

我希望将C中的值相加,因为A和B中至少有一个包含小于或等于20的值。我们假设A1:A5命名为A,B1:B5命名为B,并且C1:C5被命名为C(为简单起见)。我试过了:

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

给出了两列匹配两次的行和

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

只给出了两列匹配的行

到目前为止,我已经找到了添加A和B最低值的D列的解决方案,但它让我很烦恼,以至于我无法使用公式。

任何帮助都将受到高度赞赏,所以提前感谢。我在google搜索时发现的是同一列的多个标准&#34;问题

4 个答案:

答案 0 :(得分:2)

感谢。这样可行。找到另一个有效的,在我发现excel不会对待1 + 1 = 1,就像我在离散数学中学到的那样,但正如你所说的那样,算上两个真理。试着改为:

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

但我更喜欢你。

答案 1 :(得分:1)

你在这个公式中“总结两次”的问题

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

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

解决方案是使用IF:

将1或2转换为1
={SUMPRODUCT(C,IF((A<=20)+(C<=20))>0, 1, 0)}

这样,C列中的每个值都只计算一次最大值。

答案 2 :(得分:0)

关注this site,您可以像这样构建SUMPRODUCT()公式:

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

因此,您可以使用IF()函数控制条件,而不是嵌套SIGN()

HTH

答案 3 :(得分:0)

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

{=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 以触发数组公式(而不是键入{和})。