基于条件Excel的非相邻列总和

时间:2019-10-04 15:08:42

标签: excel excel-formula sum multiple-columns

我需要能够使用基于另一列的条件求和非相邻列(即D和E)中的值。enter image description here

我最近在excel论坛中发现了对以下问题的答复:“如何根据条件求和多个列...”。

基于公式=SUMPRODUCT((A4:A9="Football")\*(B4:D9)),“足球”的结果为24。

我需要知道的是,是否有一种只计算[B]和[D]列之和的方法-(B4:B9)+(D4:D9),避免使用以下公式:

=SUMPRODUCT((A4:A9="Football")\*(B4:B9))+SUMPRODUCT((A4:A9="Football")\*(D4:D9))

在这种情况下,“足球”的结果将是: (4 + 2)+(1 + 2)+(1 + 3)= 13。

非常感谢,

Leopoldo Fernandes

3 个答案:

答案 0 :(得分:2)

您正在使用SUMPRODUCT进行尝试的方式如下:

=SUMPRODUCT((A4:A9="Football")*(B4:B9+D4:D9))

另一种从范围B4:D9中排除某列的方式可能是:

=SUMPRODUCT((A4:A9="Football")*(COLUMN(B4:D9)<>3),B4:D9)

但是另一种(可能更好的方法)是使用多个SUMIF

=SUMIF(A4:A9,"Football",B4:B9)+SUMIF(A4:A9,"Football",D4:D9)

编辑:

解释第二个公式;它会首先根据您的查询值检查A列,并返回一个TRUEFALSE值的数组。然后,我们检查值的范围B4:D9(也可以使该值B4:D4),如果它不是第3列,则仅在矩阵中返回TRUE。现在,我们制作了矩阵,即第二个参数可以是整个范围,因此SUMPRODUCT知道要选择和添加的值。

enter image description here

如您所见,公式向我返回13,而不是15。

答案 1 :(得分:1)

您也可以尝试以下方法:

=SUMPRODUCT((A2:A7="Football")*B2:D7*ISNUMBER(FIND(B1:D1,"Week1|Week3")))

如果一个列标题可以是另一列的子字符串,则需要调整公式:

=SUMPRODUCT((A2:A7="Football")*B2:D7*ISNUMBER(FIND("|"&B1:D1&"|","|Week1|Week3|")))

这可能会更通用一些,因为您可以指定多个列标题。

答案 2 :(得分:0)

Solution

我的方法与JvdV提供的第二种方法基本相同。

=SUMPRODUCT((A4:A9="Football")*(B3:D3<>"Week 2")*B4:D9)

干杯:)