1

我有一个包含两列数据的 Excel 表,我想对其进行排名。

假设我们有以下内容:

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

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

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

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

谢谢

4

3 回答 3

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 等

编辑有错误的标志

于 2013-01-30T19:26:57.487 回答
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)

...并向下拖动

这应该为您提供按得分顺序排列的得分最高的人的表格。

于 2015-05-28T11:41:45.987 回答
1

假设 A2 是排名第一的分数 试试这个版本

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

用 CTRL+SHIFT+ENTER 确认并复制下来

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

于 2013-01-30T18:42:06.763 回答