标准不在范围内的 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
我想根据 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