我可以使用SUMPRODUCT来实现这一目标吗?

时间:2017-11-08 00:13:26

标签: excel excel-formula

需要根据值是否在列中并且一组值中的一个位于另一列中来求和范围,反之亦然。 例如我有下表:

A     B      C      D  
M     C      C      1
F     C      C      2
S     N      C      3
S     N      N      4
M     -      C      5
N     C      C      6
M     C      N      7

如果(A栏包含" M"或" S")和((B栏包含" C" AND C栏包含" C&# 34;或" N"或" - ")OR(C栏包含" C" AND B栏包含" C"或&# 34; N"或" - "))然后Sum列D

所以从我的表中我的结果是 1 + 3 + 5 + 7 = 16

2 个答案:

答案 0 :(得分:0)

如果所有条件都为真,我会添加第五列,其中当前行的条件返回D中的值,否则返回0

=Iif(AND(Or($A1 = "M", $A1 = "S"),OR(AND($B1 = "C",Or($C1 = "C",$C1 = "N",$C1 = "-")), AND($C1 = "C",OR($B1 = "C",$B1 = "N",$B1 = "-")))),$D1,0)

然后在某个地方写一个小区=sum($E:$E)。以你的例子,我按照预期得到16。

答案 1 :(得分:0)

您可以像这样使用SUMPRODUCT

=SUMPRODUCT(ISNUMBER(MATCH(A2:A10,{"M","S"},0)*MATCH(B2:B10&"^"&C2:C10,{"C^C","C^N","C^-","N^C","-^C"},0))+0,D2:D10)

MATCH用于检查A列中的有效可能性,然后检查连接列B和C的所有5种可能性 - 如果满足这些条件,则将D列相加。根据需要扩展列范围,但最好不要使用整列

.....或更短的SUMIFS,如下所示:

=SUM(SUMIFS(D:D,A:A,{"M";"S"},B:B,{"C","C","C","N","-"},C:C,{"C","N","-","C","C"}))

对于该版本,您可以使用整列而不会降低效率。

请注意,在此版本中,数组常量中的所有分隔符都是逗号 EXCEPT ,对于{“M”;“S”}中的分号,需要那样

enter image description here