在Excel中,对一列数字进行降序排名(数值大的排名靠前),并允许重复数字具有相同排名(中国式排名),可以使用 RANK.EQ、RANK.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
逻辑:
-
($A$2:$A$10 > A2)→ 统计比当前数字大的单元格数量。 -
/COUNTIF(...)→ 对重复数字进行加权处理,避免重复计算。 -
+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。
欢迎关注
喜欢本网站,就扫一扫,关注微信公众号,有惊喜哦~

评论