Excel: 排名分数并列
Excel: Ranking scores with ties
我正在研究如何从分数列表(第 1 行中的球员姓名和第 2 行中的分数)中选出第 2 名和第 3 名的获胜者。困难在于当有关系时如何考虑。我想遵守的规则如下:
- 如果只有 1 名玩家得分,其他玩家得分均为 0,则第 2 名和第 3 名应显示“-”。
- 如果两位玩家的得分相同,则选择最靠近左侧(朝向 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种可能的情况-
- 检查冠军、亚军、季军是否相同
得分,然后调整匹配公式查找数组以在秒后开始
地点得分列
- 如果获胜者和第三名的分数相同,则计算匹配
在获胜者得分列之后开始的公式查找数组。
- 如果第二名和第三名的分数相同,则计算匹配
公式查找数组在第二名得分列之后开始。
- 冠军、亚军、季军得分不相同,则
将使用原始公式。
我对第二个和第三个使用了数组公式。所以用 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名。
当所有其他条件都为零时,您可以用其他条件将其括起来以获得“-”。
我正在研究如何从分数列表(第 1 行中的球员姓名和第 2 行中的分数)中选出第 2 名和第 3 名的获胜者。困难在于当有关系时如何考虑。我想遵守的规则如下:
- 如果只有 1 名玩家得分,其他玩家得分均为 0,则第 2 名和第 3 名应显示“-”。
- 如果两位玩家的得分相同,则选择最靠近左侧(朝向 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种可能的情况-
- 检查冠军、亚军、季军是否相同 得分,然后调整匹配公式查找数组以在秒后开始 地点得分列
- 如果获胜者和第三名的分数相同,则计算匹配 在获胜者得分列之后开始的公式查找数组。
- 如果第二名和第三名的分数相同,则计算匹配 公式查找数组在第二名得分列之后开始。
- 冠军、亚军、季军得分不相同,则 将使用原始公式。
我对第二个和第三个使用了数组公式。所以用 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名。
当所有其他条件都为零时,您可以用其他条件将其括起来以获得“-”。