Google Sheets模拟赛车积分公式优化:修复积分计算异常问题
模拟赛车联赛车手积分计算公式修复需求
积分计算规则
我需要在Google Sheets中计算模拟赛车联赛车手积分,规则如下:
- 基础积分:通过
VLOOKUP根据车手完赛位置从积分体系表中获取 - 追加积分:
- 车手为本组别(Hypercar/GT3)超车数最高,加1分
- 车手为本组别发车位置最高,加1分
- 车手为本组别完赛位置最高,加2分
原公式存在的问题
最初编写的公式:
=IFERROR(VLOOKUP(RaceFinishPosition,Points_System,2,FALSE)+IF(PosGained=MAXIFS(PosGained,Class,"Hypercar"),1,0)+IF(PosGained=MAXIFS(PosGained,Class,"GT3"),1,0)+IF(RaceFinishPosition=MINIFS(RaceFinishPosition,Class,"Hypercar"),2,0)+IF(RaceFinishPosition=MINIFS(RaceFinishPosition,Class,"GT3"),2,0)+IF(StartingPosition=MINIFS(StartingPosition,Class,"Hypercar"),1,0)+IF(StartingPosition=MINIFS(StartingPosition,Class,"GT3"),1,0),IF(ISNUMBER(StartingPosition),0,))
有两个明显问题:
- 当某组别所有车手超车数为0时,该组所有车手都会被错误加1分
- 若两个组别超车数最高的数值相同,会跨组别各加1分,导致重复累计2分
修正公式的遗留问题
之后有人提供了修正公式:
=vlookup(G6,Overview!G$3:H$22,2,)+ if((E6<>0)*(E6=maxifs(E$6:E$18,C$6:C$18,C6)),1,)+ if(G6=minifs(D$6:D$18,C$6:C$18,C6),1,)+ if(G6=minifs(G$6:G$18,C$6:C$18,C6),2,)
这个公式解决了原公式的两个问题,但无法正确计算「本组别发车位置最高加1分」的规则,需要进一步修复。
内容的提问来源于stack exchange,提问作者Matthew Newton
相关产品推荐
相关产品推荐

