Excel如何对一列数字按降序进行排名?用什么函数?

petssky
petssky
petssky
6998
文章
52
评论
2025-05-19
评论
10,806 1238字阅读4分7秒

在Excel中,对一列数字进行降序排名(数值大的排名靠前),并允许重复数字具有相同排名(中国式排名),可以使用 RANK.EQRANK.AVG 或 SUMPRODUCT 函数。以下是不同方法的详细说明及示例:


方法1:RANK.EQ 函数(相同数字排名相同,后续排名跳过)

函数语法

=RANK.EQ(数字, 数字区域, [排序方式])
  • 数字:要排名的单元格(如 A2)。

  • 数字区域:所有要排名的数据范围(如 $A$2:$A$10)。

  • [排序方式]

    • 0 或省略 → 降序(数值越大,排名越靠前)。

    • 1 → 升序(数值越小,排名越靠前)。

示例

假设数据在 A2:A10,在 B2 输入公式并下拉:

=RANK.EQ(A2, $A$2:$A$10, 0)

效果

数值 排名(RANK.EQ)
100 1
95 2
95 2
80 4 ← 注意:跳过了排名3
70 5

缺点:如果有重复数字,后续排名会跳过(如两个 95 并列第2,下一个 80 直接变成第4)。


方法2:RANK.AVG 函数(相同数字取平均排名)

函数语法

=RANK.AVG(数字, 数字区域, [排序方式])
  • 与 RANK.EQ 类似,但重复数字的排名取平均值(如两个 95 并列第2.5)。

示例

=RANK.AVG(A2, $A$2:$A$10, 0)

效果

数值 排名(RANK.AVG)
100 1
95 2.5 ← 两个95的平均排名 (2+3)/2=2.5
95 2.5
80 4
70 5

适用场景:需要更精确的排名统计(如学术评分)。


方法3:SUMPRODUCT 函数(中国式排名,不跳过名次)

如果希望重复数字排名相同,且后续排名不跳过(如两个 95 并列第2,下一个 80 仍为第3),可以使用 SUMPRODUCT 公式:

公式

=SUMPRODUCT(($A$2:$A$10>A2)/COUNTIF($A$2:$A$10, $A$2:$A$10)) + 1

逻辑

  1. ($A$2:$A$10 > A2) → 统计比当前数字大的单元格数量。

  2. /COUNTIF(...) → 对重复数字进行加权处理,避免重复计算。

  3. +1 → 排名从1开始。

示例

=SUMPRODUCT(($A$2:$A$10>A2)/COUNTIF($A$2:$A$10, $A$2:$A$10)) + 1

效果

数值 排名(SUMPRODUCT)
100 1
95 2
95 2
80 3 ← 不跳排名
70 4

优点:符合中国式排名习惯,重复数字不跳过后续名次。


总结

函数 语法示例 特点 适用场景
RANK.EQ =RANK.EQ(A2, $A$2:$A$10, 0) 相同数字排名相同,后续排名跳过 一般排名(美式排名)
RANK.AVG =RANK.AVG(A2, $A$2:$A$10, 0) 相同数字取平均排名(如2.5) 学术评分、精确排名
SUMPRODUCT =SUMPRODUCT(($A$2:$A$10>A2)/COUNTIF(...)) + 1 中国式排名,不跳名次 符合国内习惯的排名

推荐

  • 默认情况 → 用 RANK.EQ

  • 需要不跳名次 → 用 SUMPRODUCT 公式。

  • 需要平均排名 → 用 RANK.AVG

weinxin
欢迎关注
喜欢本网站,就扫一扫,关注微信公众号,有惊喜哦~
petssky
  • 本文由 发表于 2025-05-19
  • 转载请务必保留本文链接:https://petssky.com/essay-47271
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: