【问题标题】:MS Excel - Can I use SUMIFS to include some criteria and exclude others in just one criteria item?MS Excel - 我可以使用 SUMIFS 在一个标准项中包含一些标准并排除其他标准吗?
【发布时间】:2018-01-15 19:21:07
【问题描述】:

以这张表为例(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

如何在一个标准中获得 Forwards 和 non-Centers 的总和?理想情况下,公式应如下所示: =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 中使用 ={"Forward", "Center"} 之类的东西,但 C14 只返回“Forward”(第一项)的值。有什么想法吗?

【问题讨论】:

  • 你的问题的答案应该是什么?
  • 您是否要重复计数?即一次用于前向标准,然后再次作为非中心标准的一部分?或者如果您只需要计算一次,那么向前部分是一个静音点,因为它们将被非中心覆盖?
  • @Forward Ed 啊,好问题!我正在寻找的答案基本上是非中心的总和(即除 ID 5 和 10 之外的所有点的总和)。我不想重复计算任何分数。
  • @ForwardEd 是的,这个例子可能不是最好的。试想一下,如果有 100 个其他位置和一堆其他标准(例如,在周二比赛的所有得分总和,得分不超过 30 分,年龄在 20 到 25 岁之间,等等)。跨度>

标签: excel-formula


【解决方案1】:

您可以在主页标签中使用Format as table将您的条件放入表格中,然后在公式中将表格范围放在您的条件所在的位置,它将出现一些东西喜欢:TableName[FieldName]

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

使用 CTRL + SHIFT + ENTER

将公式激活为数组

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

【讨论】:

  • 我试过了,条件数组 {=A1:A2} 只返回数组中的第一个值,因此 SUM 不能按预期工作。像这样直接编辑公式可能是唯一的选择,但这并不是我真正希望的。还是谢谢!
【解决方案2】:

根据您的 cmets,您可以使用 SUMPRODUCT。它将执行类似数组的操作,而实际上并不是一个数组。 be 的概念基于符合条件的事物为真,在数学运算中变为 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

然后它将所有的真假变成 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 语句,请使用 + 作为您的或运算符。所以对于红队或蓝队中心,它看起来像:

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

现在需要注意的一件事是 OR 或更确切地说 + 是您不能同时满足多个 OR 标准,否则您将获得 1+1 而不是1+0 或 0+1。并且这将失败的示例是所有 ID 大于 4 或所有 ID 小于 7。ID 5 和 ID 6 对于这两种情况都是正确的,您需要重新考虑如何执行逻辑语句或使用不同的公式或使用一个数组公式。

【讨论】:

  • 感谢您的详细帖子!不幸的是,我不想对公式本身进行编辑。我只想编辑包含标准的单个单元格。我确实更喜欢 SUMPRODUCT 而不是数组公式,因此如果无法在单个单元格中输入条件,这将是可行的方法。
  • 您可以将单词和引号替换为单元格引用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多