我有一张excel表,其中包含两列我希望排名的数据。
假设我们有以下内容:
A B
Franz 58
Daniel 92
Markus 37
Jörg 58
我想要一个公式来根据B列对上述数据进行排名,并且有重复值(Franz和Jörg)将字母名称放在第一位。我现在所拥有的只是两次重复弗兰兹:
=INDEX(Name,MATCH(A2,Points,0))
有人可以告诉我将对数据进行排名并按字母顺序排列重复值的公式/代码吗?
由于
答案 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确认并向下复制
需要对名称列表进行排序,因为具有重复分数的名称将按照显示的顺序列出