【问题标题】:SUM last N values with criteria将最后 N 个值与条件相加
【发布时间】:2020-04-29 13:36:35
【问题描述】:

我有一个看起来像这样的简单表格:

我只需要对特定球员(约翰)在最近 3 场比赛中的积分求和。

我可以用这个公式来:

SUMPRODUCT(LARGE((A2:B="John")*(C2:D);{1;2;3})) 

问题在于,它不是我要寻找的,而是对最高 3 个值求和,可以是该范围内的任何位置。

是否有一些类似的公式,只能做最后 3 场比赛?

【问题讨论】:

  • 从您的屏幕截图中不清楚哪种方式是“最近的”?向上还是向下?
  • 最近的比赛已关闭。有较深的蓝色突出了有问题的匹配项。

标签: google-sheets formula sumifs


【解决方案1】:

我认为 SUMPRODUCT 可以通过一些使用 COUNTIFS() 和 ROW() 的构造数组来获取最新的 3。

这个公式:

=SUMPRODUCT((COUNTIFS(A:B,G2,ROW(A:B)*{1,1},">="&ROW(A:B)*{1,1})<=3)*(A:B=G2),C:D)

this sheet 我做的似乎工作。

【讨论】:

  • 就可以了。非常感谢,这正是我想要的。
  • 不错的公式马特!
【解决方案2】:

我想我有一个公式可以满足您的需求。它不漂亮,我相信它可以变得更简单,但这很有效:

=query( query(
       { arrayformula(   {ROW(A1:A)         } ),
         query(A1:D,"select A, B, C, D",1)
       } , "select * order by Col1 desc",1),
 "select Col2, Col3, Col4, Col5    
  where (Col2 ='John' or Col3 = 'John')   
  order by Col1 desc limit 3",1)

基本上,它将行号作为额外的列添加到数据中,以便我们可以按行号对数据进行倒序排序。然后我们查询结果以找到“John”的前三个出现,在 Col A 或 Col B 中。

这是一个样本表: https://docs.google.com/spreadsheets/d/1-mhTb5Cpp3D-1OltlmCfwlmM-vc2OknHxfJAyHD7BjI/edit?usp=sharing

感谢 Erik Tyler 之前对另一个问题的回答,关于如何将行号添加到查询中。

编辑:更新了表格以提供约翰(或任何球员)最近三场比赛的得分总和。如果您希望将单个公式放置在某处,则可以将其与前面的公式结合使用。或者你会有一份所有球员的名单,你会希望他们的最后三个分数出现在他们每个人的名字旁边?

如果我可以简化公式,我会在这里更新它。

如果您需要更多的东西,或者这是否回答了您的问题,请告诉我。

【讨论】:

  • 如果能帮上忙真是太高兴了。 Matt 的解决方案非常优雅,我希望我知道它是如何工作的。我在公式中使用数组的知识还不能理解他的方法!还有很多东西要学...
【解决方案3】:

方法

我会使用查询公式来获取您需要的单元格,以便您可以利用 limit 语句。

您应该放置一个带有索引的列,以便您可以按降序排列单元格并取前 3 个。

鉴于您的表格标题是:

+-----------------------------------------------+
| INDEX | NAME 1 | NAME 2 | POINTS 1 | POINTS 2 |
+-----------------------------------------------+

我会使用这个查询来得到你想要的结果:

=SUMPRODUCT(QUERY(A2:E, "Select D * E where B = 'John' or C = 'John'" order by A desc limit 3"))

【讨论】:

  • 感谢您的回复。我尝试使用您的解决方案,但您建议的查询公式不起作用。出于某种原因,它返回:i.imgur.com/NDvzhh9.png
  • 我看到你的公式只是查询。您应该将查询包装在 SUMPRODUCT 函数中,如下所示:=SUMPRODUCT( QUERY( ... ) )
  • 是的,我做到了。有一个截图。 i.imgur.com/NDvzhh9.png
  • 是的,由于某种原因它没有加载抱歉。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-04
  • 2016-09-24
  • 1970-01-01
  • 1970-01-01
  • 2015-04-19
  • 1970-01-01
相关资源
最近更新 更多