SUM最后N个有标准的值

问题描述 投票:0回答:1

我有一个简单的表格,是这样的。

enter image description here

我所需要的是特定球员(John)在过去3场比赛中的积分。

我可以用这个公式来计算。

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

问题是,它不是我想要的,而是把最高的3个值相加,而这3个值可以是在这个范围内的任何地方。

有没有类似的公式,可以只计算最近3场比赛?

google-sheets formula sumifs
1个回答
2
投票

我认为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)

在... 本页 我做的似乎工作。


1
投票

我想我有一个公式可以给你想要的东西。 它并不漂亮,而且我相信它可以变得更简单,但是这个公式可以用。

=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 "的前三次出现,在A列或B列。

下面是一个示例表。https:/docs.google.comspreadsheetsd1-mhTb5Cpp3D-1OltlmCfwlmM-vc2OknHxfJAyHD7BjIedit?usp=分享。

归功于 Erik Tyler 之前对不同问题的回答,即如何在查询中添加行号。

编辑: 更新了工作表,提供了约翰(或任何球员)在过去三场比赛中的得分总和。 如果你想要一个单一的公式放在某个地方,这可以和之前的公式结合起来。 或者你有一个所有球员的列表,你需要在每个球员的名字旁边加上他们的最后三场比赛的分数?

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

如果你需要比这更多的东西,或者如果这已经回答了你的问题,请告诉我。


0
投票

办法

我会使用查询公式来获取你需要的单元格,这样你就可以利用 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"))
© www.soinside.com 2019 - 2024. All rights reserved.