如何用Excel公式求和指定球员John最近3场比赛的得分?
解决John最近3场比赛得分求和的问题
你之前用的SUMPRODUCT(LARGE((A2:B="John")*(C2:D);{1;2;3}))确实踩了个小坑——LARGE函数只认数值大小,不管记录的时间顺序,所以它会把John所有得分里最高的3个加起来,而不是你要的最近3场。别担心,咱们根据你的Excel版本和数据结构来调整公式:
情况1:数据按比赛时间从旧到新排列(最新的在表格最下方)
如果你的表格是按比赛先后顺序往下排的,John的名字在A列,得分在C列(数据从第2行开始),可以用这个公式:
=SUMPRODUCT(INDEX(C:C, AGGREGATE(14,6,ROW(A2:A100)/(A2:A100="John"),{1,2,3})))
原理:ROW(A2:A100)/(A2:A100="John")会筛选出所有John所在行的行号(其他行返回错误值),AGGREGATE的14模式会提取这些行号里最大的3个(也就是最新的3场对应的行),最后用INDEX抓出对应得分再求和。
情况2:用Excel 365/2021(支持动态数组)
这个版本有更简洁的写法,一步到位:
=SUM(TAKE(FILTER(C:C,A:A="John"),-3))
原理:先通过FILTER把John所有的得分筛选出来,TAKE(-3)直接取筛选结果里最后3个(最近的3场),最后SUM求和,逻辑一目了然。
情况3:有比赛日期列(不管数据排列顺序)
如果表格里有专门的日期列(比如B列是比赛日期),不管数据怎么排,都能按日期取最近3场:
=SUM(INDEX(C:C, MATCH(LARGE(IF(A2:A100="John",B2:B100),{1,2,3}),B2:B100,0)))
注意:旧版Excel需要按Ctrl+Shift+Enter作为数组公式输入,365/2021直接回车就行。
原理:先通过IF筛选出John的所有比赛日期,LARGE取其中最大的3个(最近的3场日期),MATCH找到这些日期对应的行号,最后INDEX提取得分求和。
内容的提问来源于stack exchange,提问作者DanovaKobra
相关产品推荐
相关产品推荐

