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

Sum row based on criteria across multiple columns

我用谷歌搜索了几个小时,没能找到解决我的问题的方法need/want。我有一个 Excel sheet ,我想在其中根据两列之一应具有特定值的标准对一列中的值求和。例如

    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 的解决方案,但它让我非常烦恼,以至于我无法用公式来完成。

非常感谢您的帮助,在此先致谢。谷歌搜索时我发现的只是 "multiple criteria for same column" 问题。

你这个公式中的问题是"summing twice"

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

是因为加法把第一个TRUE加上第二个TRUE变成2,其实不是求和两次,因为对于任何一行,只要满足一个条件,就只算一次。

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

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

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

谢谢。这样可行。在我发现 excel 并不像我在离散数学中学到的那样对待 1 + 1 = 1 之后,找到了另一个有效的方法,但正如你所说,计算了两者的真实性。尝试改为:

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

但我更喜欢你的。

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

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

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

hth

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

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