Excel:用关系排列分数

我正在寻找如何从得分列表中选出一个获胜者,第二名和第三名(第一行的玩家名字和第二行的分数)。 困难是如何考虑到有关系的时候。 我想遵循的规则如下:

  1. 如果只有一名球员得分,而其他所有人都有0,则第二名和第三名应该显示“ – ”。
  2. 如果两名选手得分相同,则取左边最接近的一名(朝A栏)

沙发我有以下几点:

获胜者,冠军:

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

第二名:

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

例子:玩家1(250),玩家2(300),玩家3(300)=> 获胜者 2,玩家2

非常感谢,

以下是在两名选手得分相同的情况下find第二名的公式 –

 =IF(COUNTIF(A2:H2,">"&0)=1,"-",IF(LARGE($A2:$G2,1)=LARGE($A2:$G2,2),INDEX($A$1:$G$1,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$1:$G$1,MATCH(LARGE($A2:$G2,2),A2:G2,0)))) 

基本上,我已经增加了一个如果公式围绕你的给定公式 –

1)如果两名球员的得分相同 –

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

改变匹配公式查找数组的范围。 这个dynamic范围是使用偏移来指定的 –

 INDEX($A$1:$G$1;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$1:$G$1;MATCH(LARGE($A2:$G2;2);A2:G2;0)) 

这种方法的局限性是不可能使这个公式成为通用的。

例如,为了find第三名,有四种可能的情况 –

  1. 检查获胜者,亚军和第三名是否有相同的分数,然后调整比赛公式查找arrays在第二名得分列后开始
  2. 如果获胜者和第三名有相同的分数,那么计算匹配公式查找数组,在获胜者分数列后面开始。
  3. 如果第二名和第三名有相同的分数,则计算匹配公式查找数组,然后在第二名的分数列开始。
  4. 获胜者的得分,也不是第二,也不是第三位,那么将使用原来的公式。

我用第二和第三的数组公式。 所以用Ctrl-Shft-Enter确认公式

编辑

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

我正在生成一个新的数组,将第一个分数replace为0,并在这个新列表中find最高人物。

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

这里我排除了前两名的分数。

当其他条件都为零时,可以用其他条件包围这个“ – ”。

在这里输入图像说明