带有INDIRECT的多列的SUMIF

时间:2014-04-02 17:25:13

标签: excel excel-formula

我有一个用作数据库的Excel工作表,让我们在下面的示例中调用MyDB。第一列A由一些字符串组成。

A                | B            | C 
-----------------|--------------|------------------------------------------
Turnover 2014    | 1            | 2
Something        | 2            | 0
Something        |              | 
Turnover 2014    | 3            | 1
Something        |              | 
Something        | 0            | 2

我想要做的是查找字符串Turnover 2014并将B中该行中的所有值相加:C(在我的例子中,C只是一个例子,它将是可变的,可以是F或M)。

我有什么:

=SUMIF(INDIRECT("'MyDB'!A"&Helper!D2&":"&"A"&Helper!D8),"=Turnover 2014",INDIRECT("'MyDB'!$B"&Helper!D2&":"&"B"&Helper!D8))

Helper!D2Helper!D8包含变量范围,这是我必须使用INDIRECT的原因之一。对于此示例,我们假设D2 = 1D8 = 6(完整表格)

简单版本:

=SUMIF(INDIRECT("'MyDB'!A1:A6"),"=Turnover 2014",INDIRECT("'MyDB'!B1:B6"))

这会将B A = Turnover 2014中的所有值相加,所以这里没问题。现在,我将向您展示我尝试使用多列进行相同的操作:

=SUMIF(INDIRECT("'MyDB'!A1:A6"),"=Turnover 2014",INDIRECT("'MyDB'!B1:C6"))

=SUMPRODUCT((INDIRECT("'MyDB'!A1:A6") = "Turnover 2014")*(INDIRECT("'MyDB'!B1:C6")))

在我的情况下两者都不起作用(重要的是我并没有谈论简化版本我正在谈论带有所有变量的原始版本)。

在所有情况下,我只能获得4所需的总和7

1 个答案:

答案 0 :(得分:1)

检查列A是否包含Turnover 2014,而不包含前导/尾随空格。

尝试:

=SUMPRODUCT(
 (TRIM(INDIRECT("'MyDB'!A"&Helper!D2&":"&"A"&Helper!D8)) = "Turnover 2014")*
 (INDIRECT("'MyDB'!B"&Helper!D2&":"&"C"&Helper!D8))
)

我还建议你看一下没有INDIRECT的替代公式哪个更好,因为它是不易变的公式:

=SUMPRODUCT(
 (TRIM(INDEX(MyDB!$A:$A,Helper!D2):INDEX(MyDB!$A:$A,Helper!D8))="Turnover 2014")*
 (INDEX(MyDB!$B:$B,Helper!D2):INDEX(MyDB!$C:$C,Helper!D8))
)