这可以作为一系列 Excel 公式轻松完成吗
简短的回答,是的。(取决于您对“轻松”的定义)。
长答案...
(我认为这行得通)
这是我的(简要)测试数据:
A B C D
1 NAME CLUB STATUS SCORE
2 Kevin a Gent 145
3 Lyle a Gent 150
4 Martin a Gent 195
5 Norm a Gent 150
6 Oonagh a Lady 100
7 Arthur b Gent 200
8 Brian b Gent 210
9 Charlie b Gent 190
10 Donald b Gent 220
11 Eddie b Junior 150
12 Quentin c Gent 145
13 Ryan c Gent 150
14 Sheila c Lady 195
15 Trevor c Gent 150
16 Ursula c Junior 200
现在,如果我对规则的理解正确,我们想要最好的四分,但如果女士或青少年的最高分不在最好的四分之内,我们使用它而不是第四高。我已经重申了一些,原因可能会变得很明显......
好的。数组公式来拯救!(我希望)
a队的最高分应该是
{=LARGE(IF(B2:B16="a",D2:D16,0),1)}
其中 {} 表示使用 Control-Shift-Enter 输入公式创建的数组公式。前四名的创建方式类似。对于女士/少年位,我们需要更多的复杂性。以女士为例,我们需要这个:
{=LARGE(IF($B$2:$B$16=$J3,IF($C$2:$C$16="Lady",$D$2:$D$16,0),0),1)}
我希望,Junior 可以安全地留给学生作为练习。
我现在正在查看具有以下布局的俱乐部“a”的表格
J K L M N O P
1 Club 1 2 3 4 Lady Junior
2 a 195 150 150 145 100 0
俱乐部得分应该是前三名的“任何人”得分加上最好的女士或青少年(如果她们尚未进入前四名)。
所以在第二季度我把这个:
=SUM(K2:M2)+MIN(MAX(O2,P2),N2)
MAX(O2,P2) 告诉我最好的女士或青少年分数,必须包括在内。如果它高于第四高的球队得分,那么它已经在列表中,我们只取前四名。否则,我们用最好的女士/小学生代替第四高的分数。
现在我们可以在一个公式中完成所有操作,将部分代入最终公式:
{=LARGE(IF($B$2:$B$16=$J3,$D$2:$D$16,0),1)+
LARGE(IF($B$2:$B$16=$J3,$D$2:$D$16,0),2)+
LARGE(IF($B$2:$B$16=$J3,$D$2:$D$16,0),3)+
MIN(LARGE(IF($B$2:$B$16=$J3,$D$2:$D$16,0),4),
MAX(LARGE(IF($B$2:$B$18=$J3,IF($C$2:$C$18="Lady",$D$2:$D$18,0),0),1),
LARGE(IF($B$2:$B$18=$J3,IF($C$2:$C$18="Junior",$D$2:$D$18,0),0),1)))}
但我不推荐它...
所以对于上述数据,我最终得到了这个:
Anyone Lady Junior
Club 1 2 3 4 1 1 Total
a 195 150 150 145 100 0 595
b 220 210 200 190 0 150 780
c 200 195 150 150 195 200 695
大鼠。在我(我认为)让困难的部分工作时感到兴奋时,我忘了提到
- 分数列表可以按任何顺序排列
- 您可以使用 RANK() 获得俱乐部排名
- 然后,您可以使用 MATCH() 和 INDEX() 将前 10 名拉到另一个表中
A B C D E F G H
1 club Sc Rank UniqRk Pos Club Score
2 third-equal#1 80 3 79.999980 1 1 best 100
3 second 90 2 89.999970 2 2 second 90
4 third-equal#2 80 3 79.999960 3 3 third-equal#1 80
5 best 100 1 99.999950 4 3 third-equal#2 80
6 worst 70 5 69.999940 5 5 worst 70
A 列和 B 列是我们计算的分数,E 列是俱乐部在决赛桌中的输出顺序。其他公式如下:
C: =RANK(B2,$B$2:$B$6) # what it says, with ties both getting the lower number
D: =B2-ROW()*0.00001 # score, modified slightly to ensure uniqueness
F: =SMALL($C$2:$C$6,E2) # first output column, ranks including ties
G: =INDEX($A$2:$A$6,MATCH(LARGE($D$2:$D$6,E2),$D$2:$D$6,0))
# club name for position, using the modified score in D
H: =INDEX($B$2:$B$6,MATCH(LARGE($D$2:$D$6,E2),$D$2:$D$6,0))
# as G, but indexes into scores