Excel: 排名分数并列

Excel: Ranking scores with ties

我正在研究如何从分数列表(第 1 行中的球员姓名和第 2 行中的分数)中选出第 2 名和第 3 名的获胜者。困难在于当有关系时如何考虑。我想遵守的规则如下:

  1. 如果只有 1 名玩家得分,其他玩家得分均为 0,则第 2 名和第 3 名应显示“-”。
  2. 如果两位玩家的得分相同,则选择最靠近左侧(朝向 A 列)的一位

到目前为止我有以下内容:

获胜者:

=INDEX($A:$G;MATCH(LARGE($A2:$G2;1);$A2:$G2;0))

第二名:

=IF(COUNTIF(A2:G2;">"&0)=1;"-";INDEX($A:$G;MATCH(LARGE($A2:$G2;2);$A2:$G2;0)))

示例:玩家 1 (250)、玩家 2 (300)、玩家 3 (300) => 获胜者 玩家 2,第二名 玩家 3

非常感谢,

以下是在两个玩家得分相同的情况下寻找第二名的公式 -

=IF(COUNTIF(A2:H2,">"&0)=1,"-",IF(LARGE($A2:$G2,1)=LARGE($A2:$G2,2),INDEX($A:$G,MATCH(LARGE($A2:$G2,2),OFFSET(A2,0,MATCH(LARGE($A2:$G2,1),$A2:$G2,0),1,6),0)+MATCH(LARGE($A2:$G2,1),$A2:$G2,0)),INDEX($A:$G,MATCH(LARGE($A2:$G2,2),A2:G2,0))))

基本上,我在您给定的公式周围添加了一个 if 公式 -

1) 如果两位玩家的最高分相同 -

LARGE($A2:$G2,1)=LARGE($A2:$G2,2)

更改匹配公式查找数组的范围。此动态范围使用偏移量 -

指定
INDEX($A:$G;MATCH(LARGE($A2:$G2;2);OFFSET(A2;0;MATCH(LARGE($A2:$G2;1);$A2:$G2;0);1;6);0)+MATCH(LARGE($A2:$G2;1);$A2:$G2;0))

2) 如果获胜者和第二名玩家的分数不相同,则使用原始公式。

INDEX($A:$G;MATCH(LARGE($A2:$G2;2);A2:G2;0))

此方法的局限性在于无法使此公式通用。

比如找第三名,有4种可能的情况-

  1. 检查冠军、亚军、季军是否相同 得分,然后调整匹配公式查找数组以在秒后开始 地点得分列
  2. 如果获胜者和第三名的分数相同,则计算匹配 在获胜者得分列之后开始的公式查找数组。
  3. 如果第二名和第三名的分数相同,则计算匹配 公式查找数组在第二名得分列之后开始。
  4. 冠军、亚军、季军得分不相同,则 将使用原始公式。

我对第二个和第三个使用了数组公式。所以用 Ctrl-Shift-Enter

确认公式

已编辑

Second place = =INDEX(A:G,1,MATCH(LARGE(IF(A:G<>$B,A:G,0),1),$A:$G,0))

我正在生成一个新数组,方法是将第一名的分数替换为 0 并在这个新列表中找到最高的人。

Third place =INDEX(A:G,1,MATCH(LARGE(IF(A:G<>$B,A:G,0),1),IF(A:G<>$B,A:G,0),0))

这里我要剔除前2名。

当所有其他条件都为零时,您可以用其他条件将其括起来以获得“-”。