我有一个简单的表格,是这样的。
我所需要的是特定球员(John)在过去3场比赛中的积分。
我可以用这个公式来计算。
SUMPRODUCT(LARGE((A2:B="John")*(C2:D);{1;2;3}))
问题是,它不是我想要的,而是把最高的3个值相加,而这3个值可以是在这个范围内的任何地方。
有没有类似的公式,可以只计算最近3场比赛?
我认为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)
在... 本页 我做的似乎工作。
我想我有一个公式可以给你想要的东西。 它并不漂亮,而且我相信它可以变得更简单,但是这个公式可以用。
=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 之前对不同问题的回答,即如何在查询中添加行号。
编辑: 更新了工作表,提供了约翰(或任何球员)在过去三场比赛中的得分总和。 如果你想要一个单一的公式放在某个地方,这可以和之前的公式结合起来。 或者你有一个所有球员的列表,你需要在每个球员的名字旁边加上他们的最后三场比赛的分数?
如果我可以简化公式,我会在这里更新它。
如果你需要比这更多的东西,或者如果这已经回答了你的问题,请告诉我。
我会使用查询公式来获取你需要的单元格,这样你就可以利用 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"))