用于排名重复值的Excel函数

时间:2013-01-30 18:26:58

标签: excel duplicates rank

我有一张excel表,其中包含两列我希望排名的数据。

假设我们有以下内容:

    A        B
    Franz    58
    Daniel   92
    Markus   37
    Jörg     58

我想要一个公式来根据B列对上述数据进行排名,并且有重复值(Franz和Jörg)将字母名称放在第一位。我现在所拥有的只是两次重复弗兰兹:

     =INDEX(Name,MATCH(A2,Points,0))

有人可以告诉我将对数据进行排名并按字母顺序排列重复值的公式/代码吗?

由于

3 个答案:

答案 0 :(得分:4)

我会在您的数据旁边添加一个帮助列,以帮助解决问题。 所以在C栏中使用

=B1+1/COUNTIF($A$1:$A$4,"<="&A1)/10

这将添加基于名称的小数排名系统。这假设您在B列中的数字没有小数位,如果他们这样做,那么您将需要增加公式末尾的10来解释它,即:2位小数使用1000,3:10000等

使用此公式获取名字

=INDEX(name,MATCH(LARGE(points,1),points,0))

为第二个名称等调整1到2

编辑的标志错误

答案 1 :(得分:2)

这将对您的数据进行排名,也不会重复重复:

在C2中:

=SUM(1*(b2>$b$2:$b$5))+1+IF(ROW(b2)-ROW($b$2)=0,0,SUM(1*(b2=OFFSET($b$2,0,0,INDEX(ROW(b2)-ROW($b$2)+1,1)-1,1))))

CTRL + SHIFT + ENTER将其变为数组

将它们向下拖动到C5并且它不会重复名称相同的等级,如果它们是相同的,它将按字母顺序排列。

然后,如果您想按照最佳表现者/得分的顺序自动订购,那么请执行以下操作:

把它放在E2中:

=INDEX(A2:A5,MATCH(LARGE(C2:C5,ROW()-1),C2:C5,0))

...并向下拖动

然后在数据上使用vlookup返回得分,将其放入F2:

=vlookup(E2,A2:C5,2,false)

...并向下拖动

这应该会给你一个得分最高的得分表。

答案 2 :(得分:1)

假设A2是排名积分中的第一个,请尝试此版本

=INDEX(Name,SMALL(IF(A2=Points,ROW(Points)-MIN(ROW(Points))+1),COUNTIF(A$2:A2,A2)))

使用CTRL + SHIFT + ENTER确认并向下复制

需要对名称列表进行排序,因为具有重复分数的名称将按照显示的顺序列出