MS Excel - 我可以使用SUMIFS包含一些标准并仅在一个标准项中排除其他标准吗?

时间:2018-01-15 19:21:07

标签: excel-formula

以此表为例(A1中的“ID”和D11中的最后55个):

ID, Team, Position, Points
1, Blue, Guard, 10
2, Blue, Guard, 15
3, Blue, Forward, 20
4, Blue, Forward, 25
5, Blue, Center, 30
6, Red, Guard, 35
7, Red, Guard, 40
8, Red, Forward, 45
9, Red, Forward, 50
10, Red, Center, 55

如何在一个标准中获得前锋和非中心的总和?理想情况下,公式看起来像这样:= SUM(SUMIFS(D $ 2:D $ 11,$ B $ 2:$ B $ 11,$ B14,$ C $ 2:$ C $ 11,$ C14)) 其中B14 = *和C14包含前锋和非中心的标准。理想情况下,我只有一个标准单元格C14。我可以添加另一组标准(例如,= SUM(SUMIFS(D $ 2:D $ 11,$ B $ 2:$ B $ 11,$ B14,$ C $ 2:$ C $ 11,$ C14,$ C $ 2:$ C $ 11 ,$ D14)))但真正的问题是,有时它只是一个标准,有时它会更多。

我尝试在C14中使用类似= {“前进”,<>“中心”}的内容,但C14仅返回“前进”(第一项)的值。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

根据您的评论,您可以使用SUMPRODUCT。它将执行数组操作,而不是实际上是一个数组。该概念基于匹配您的条件为真的事物,在数学运算中变为1,在数学运算中与您的标准不匹配或为0的事物。

让我们制作4个范围

ID = $A$2:$A$11
TEAM = $B$2:$B$11
POSITION = $C$2:$C$11
POINTS = $D$2:$D$11

=sumproduct((POSITION<>"Center")*POINTS)

当你破坏这个公式时,首先要做的是生成一个真假结果的数组。在你的情况下,它将是这样的:

(TRUE)*10
(TRUE)*15
(TRUE)*20
(TRUE)*25
(FALSE)*30
(TRUE)*35
(TRUE)*40
(TRUE)*45
(TRUE)*50
(FALSE)*55

然后它会将所有真正的false转换为1或0来进行数学运算,所以它看起来像这样:

(1)*10
(1)*15
(1)*20
(1)*25
(0)*30
(1)*35
(1)*40
(1)*45
(1)*50
(0)*55

然后,它将执行数学运算,为您提供符合要求的数字列表,以及未满足您的要求的地点的零值。 SUMPRODUCT公式的最后一步是对列表中的所有数字求和。

在这种情况下,你获得240非中心的分数。

现在,在您有多个条件的情况下,*将在逻辑语句中充当AND运算符。因此,如果你想知道TEAM的点是RED,那么你的公式将成为Guard位置:

=SUMPRODUCT((TEAM="Red")*(POSITION="Guard")*POINTS)

哪个会给你75

现在,由于SUMPRODUCT执行类似操作的数组,因此请避免使用完整的列引用,因为这会导致过多的计算。此外,虽然它在单个单元操作中非常好并且整洁,但是不要经常重复该公式。你知道什么时候这样做,因为你的电子表格需要更长的时间来完成计算,如果你真的过度了,你的prg可能会崩溃。

如果要进行OR语句,请使用+作为您或运算符。因此,对于RED或BLUE TEAM Center,它看起来像:

=SUMPRODUCT(((TEAM="Red")+(TEAM="Blue"))*(POSITION="Center")*POINTS)

现在有一点需要注意的是OR或者更确切地说+是你不能同时满足一个以上的OR标准,或者你的数量会因为你得到1 + 1而不是1 + 0或0 + 1。并且失败的地方的例子是所有ID大于4或所有ID小于7.对于这两种情况,ID 5和ID 6都是正确的,您需要重新考虑如何执行逻辑语句或使用不同的公式或使用数组公式。

答案 1 :(得分:0)

您可以在主页标签中使用格式为表格在表格中添加标准,然后在公式中将表格范围放在哪里是您的标准它会出现的内容喜欢:TableName[FieldName]

{=SUM(SUMIFS(D2:D11,C2:C11,Table1[Criteria]))}

使用 CTRL + SHIFT + ENTER

将公式激活为数组

现在,您可以添加和删除公式所需的所有条件。