Excel:用关系排名得分

时间:2016-11-14 11:02:07

标签: excel excel-formula ranking

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

  1. 如果只有一名球员得分,而其他所有人都得0,那么第二名和第三名应该显示" - "。
  2. 如果两个玩家的得分相同,那么请选择最接近左手边的玩家(朝A列)
  3. Sofar我有以下内容:

    获胜者:

    =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,第二名玩家3

    非常感谢,

2 个答案:

答案 0 :(得分:1)

以下是在两名球员得分相同的情况下找到第二名的公式 -

=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)

更改匹配公式查找数组的范围。使用offset -

指定此动态范围
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))

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

例如,为了找到第三名,有4种可能的情况 -

  1. 检查获胜者,第二名和第三名是否相同 得分,然后调整匹配公式查找数组以在第二个之后开始 地点得分栏
  2. 如果获胜者和第三名得分相同,则计算匹配 公式查找数组在获胜者得分列之后开始。
  3. 如果第二和第三位有相同的分数,那么计算匹配 公式查找数组在第二位得分列之后开始。
  4. 获胜者的得分,第二名和第三名都不一样 将使用原始配方。

答案 1 :(得分:1)

我使用第二和第三的数组公式。因此,请使用Ctrl-Shft-Enter

确认公式

被修改

SELECT A,
       B,
       dbo.storedproc( function1(A,B),
                       function1(A,B),
                       function2(B,C),
                       D
                      ) AS newcol,               
       D
 FROM Table;

我通过将第一名的分数替换为0并在此新列表中找到最高人物来生成新数组。

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))

我在这里取消了前2名。

当其他条件为零时,你可以用另一个条件包围这个“ - ”。

enter image description here