条件不在范围内的SUMIFS

时间:2015-04-10 10:03:32

标签: excel excel-formula sumifs

我想通过表格的多个标准来计算总和:

    A      B      C    D
1  crit1 crit2 code   amount
2   a      b    code1  10
3   a      b    code3  20
4   a      b    code2  100
5   a      b    code1  80
6   a      b    code4  30

此外,我还有一系列要排除的代码:

      A         B    C    D
     ...........
10  exclude rows
11  code1
12  code8

标记结果单元格的公式如下所示:SUMIFS(D2:D6,A2:A6,"a",B2:B6,"b")。 如何更改SUMIFS公式以按排除代码范围(A11:A12)内的代码进行过滤?

2 个答案:

答案 0 :(得分:6)

=SUMPRODUCT(
            (A2:A6="a")  * (B2:B6="b") * ISNA(MATCH(C2:C6,A11:A12,0)),
            D2:D6)

MATCH在查找数组(列出排除行)中找不到查找值(代码)时返回#N/A!错误。 ISNA()将匹配项转换为FALSE,将不匹配项(#N/A!)转换为TRUE。然后使用数学运算符*将其与您的其他标准“和”化; TRUE变为1,FALSE在此过程中变为0。 SUMPRODUCT最后总结了与1的排列量(而不是0的那些)。

enter image description here

答案 1 :(得分:3)

Jean-FrançoisCorbett的回答是迄今为止最合适和最易理解的。

但是,只是为了表明仍然可以使用SUMIFS来实现(虽然代价是一些错综复杂的行为!):

=SUM(MMULT(MMULT({1,1},SUMIFS(D2:D6,A2:A6,"a",B2:B6,"b",C2:C6,{"=","<>"}&A11:A12)),{-1;1}))/2