【问题标题】:Excel function for ranking duplicate values用于对重复值进行排序的 Excel 函数
【发布时间】:2013-01-30 18:26:57
【问题描述】:

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

假设我们有以下内容:

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

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

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

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

谢谢

【问题讨论】:

  • 按您需要的顺序按这些列排序:定义您的排序顺序,首先按 B 列,然后按 A 列。
  • 你需要一个函数来返回排序(排序)值的数组吗?
  • 我需要这是一个公式或函数,而不是必须手动排序的东西。我的公式不能按一个然后另一个排序,因为在执行第一次排序时已经创建了重复的名称。

标签: excel duplicates rank


【解决方案1】:

我会在您的数据旁边添加一个帮助列来帮助解决关系问题。 所以在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 等

EDIT 标错了方向

【讨论】:

  • 这是给你的一个新的。如果我们有相同的四个人,Franz 和 Jörg 再次在分数上并列,但我们不想按字母顺序排序,而是按 C 到 G 列中每个人的最低值(即他们的最佳结果)排序,应该使用什么公式?
  • 您尝试使用公式对这些用户进行排名越深入,将数据放入数据透视表中的效果就越好,这将使您可以轻松地以任何您喜欢的方式进行排名。跨度>
【解决方案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)

...向下拖动

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

【讨论】:

  • 使用第二个公式,使用 ROW()-1 方面,它完全省略了排名最高的人。您需要使用 ROW()-2 来捕获最高得分者。除此之外,这是一个很好的例子,谢谢。
【解决方案3】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2021-04-24
    • 1970-01-01
    • 2013-07-26
    • 2018-03-28
    • 1970-01-01
    • 2013-01-08
    • 1970-01-01
    • 2020-09-19
    • 1970-01-01
    相关资源
    最近更新 更多