标准不在范围内的 SUMIFS

SUMIFS with criterion not in range

我想根据 table 的多个条件计算总和:

    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) 中的代码进行过滤?

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

MATCH returns 在查找数组(列出排除的行)中找不到查找值(代码)时出现 #N/A! 错误。 ISNA() 将匹配项转换为 FALSE,将不匹配项 (#N/A!) 转换为 TRUE。然后使用数学运算符 * 将这些 "and'ed" 与您的其他标准结合起来;在这个过程中,TRUE 变为 1,FALSE 变为 0。 SUMPRODUCT 最后总结了与 1 对齐的金额(而不是与 0 对齐的金额)。

Jean-François Corbett 的回答是迄今为止最恰当和最容易理解的。

然而,只是为了表明它仍然可以使用 SUMIFS 来实现(尽管以一些复杂的代价为代价!):

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