Excel RANK 排名函数怎么用(含并列排名)
给一列成绩或销售额排名次,听起来简单,真写起来却有三道坎:参数怎么记、两个人同分排名会跳号、中国式排名(并列不跳号)公式又绕得要命。本文一次讲清,再教你用超级表把这件事做得更简单。
RANK 函数基本用法
RANK 函数的完整写法是:
=RANK(number, ref, [order])
三个参数依次是:
- number:要排名的那个值,通常是当前行的单元格,比如
B2; - ref:整个排名区域,必须用绝对引用锁住,比如
$B$2:$B$11,否则往下拖公式时范围会跑偏; - order:排序方向。0(或省略)是降序(值越大名次越靠前,适合成绩、销售额);1 是升序(值越小名次越靠前,适合用时、错误数)。
举个例子:B 列是 10 名学生的考试成绩,在 C2 写:
=RANK(B2, $B$2:$B$11, 0)
往下拖到 C11,每行就自动算出该同学在班里的名次。ref 前后的 $ 一定不能少,这是最常见的错误——忘了锁,下拉后范围每行偏移一格,名次全乱。
并列排名问题:RANK 会跳号
RANK 函数有一个让人头疼的特性:并列时会跳号。如果两个人都是第 3 名,RANK 会给他们都标 3,但下一个人直接跳到第 5,不存在第 4 名。这在国际赛事里是标准做法,但在国内考试场景里经常被投诉"名次不对"。
Excel 对此提供了两个变体函数:
- RANK.EQ:行为与 RANK 完全相同,并列取最小名次,后面跳号。
=RANK.EQ(B2, $B$2:$B$11, 0) - RANK.AVG:并列时取平均名次。两人并列第 3,都显示 3.5(第 3、4 名的平均值)。统计场景有时用到,日常排名用得少。
=RANK.AVG(B2, $B$2:$B$11, 0)
RANK 和 RANK.EQ 在现代 Excel 里结果完全一样;RANK 是旧版兼容写法,两个都能用。
中国式排名:并列不跳号
「中国式排名」的要求是:两人并列第 3,下一个人仍是第 4,名次连续不跳。这个需求 RANK 本身做不到,要用 SUMPRODUCT 或 COUNTIF 绕一下。
用 COUNTIF 的写法(在 C2 写,往下拖):
=COUNTIF($B$2:$B$11,">"&B2)+1
逻辑是:数出区域里有多少个值比当前值大,加 1 就是当前的名次。因为并列时"比我大的人数"相同,所以并列者名次相同,后面的人自然接续下去,不跳号。
如果是升序(越小越好):
=COUNTIF($B$2:$B$11,"<"&B2)+1
用 SUMPRODUCT 的等价写法(降序):
=SUMPRODUCT((($B$2:$B$11)>B2)*1)+1
两种写法结果一样,COUNTIF 版更好读,SUMPRODUCT 版在部分老版本 Excel 里更稳。
">"&B2 拼比较条件、结果再 +1,不直观;SUMPRODUCT 用数组乘法计数,初学者更难理解。两个都需要记,每次用还容易忘大小于号方向。
这些写法的麻烦
把上面几种方法汇总一下,用起来的麻烦主要有四点:
- 范围必须手动锁 $,拖公式前容易忘。忘了加绝对引用,整列名次全错,还不会报错提示,很难发现。
- 跳号 vs. 不跳号要切换两套公式。用 RANK 是跳号,要不跳号就得改成 COUNTIF/SUMPRODUCT,不能在同一个函数里切换。
- 中国式排名公式难记,方向易写反。
">"&B2降序对应大于,升序对应小于,经常混淆。 - 分组内排名更复杂。如果要「每个部门内部各自排名」,要用 COUNTIFS 多加一个条件,公式又长一截。
更简单:超级表排序 + 公式面板出名次
超级表(TableDI)是一款桌面端高能表格助手,macOS / Windows 均可用,离线运行、无需登录。排名这件事在超级表里可以拆成两步完成,不用背函数参数:
- 把含成绩或销售额的表格导入超级表(Excel / CSV 拖进来即可)。
- 点击成绩列的列头,选择「按字段排序」,选降序(从大到小)。数据立刻按分值高低重排,视觉上名次一目了然。
- 新建一列「名次」,打开公式面板——点选运算符和字段,用可视化方式搭出排名计算逻辑(例如:行号、COUNTIF 条件);不需要手动拼
">"&或记绝对引用,面板会帮你处理。更通用的公式面板用法可参考用公式面板代替 VLOOKUP。 - 如果要分组内排名(每个部门单独排),超级表支持分组汇总,按部门分组后再对组内数值排序,不需要额外写 COUNTIFS。
导入的表还可以和其他表多表联动:成绩表更新,名次列自动跟着变,不用重新排序或重拖公式。整个过程本地离线完成,数据不上云。
Excel RANK 写法 vs 超级表
| 对比项 | Excel RANK / COUNTIF | 超级表 |
|---|---|---|
| 怎么做 | 记参数、拼公式、手动锁 $ | 按字段排序 + 公式面板点选 |
| 并列不跳号 | 要换 COUNTIF/SUMPRODUCT 写法 | 排序后行序即名次,天然不跳 |
| 分组内排名 | COUNTIFS 多加条件,易出错 | 分组汇总后组内排序即可 |
| 区域引用 | 手动加 $,忘了全乱 | 面板自动处理,无需锁定 |
| 数据更新 | 手动重拖公式 | 联动自动更新 |
| 离线本地 | Excel 本地,但公式在云端保存有风险 | 完全本地,零登录 |
常见问题
排名为什么有跳号?
这是 RANK / RANK.EQ 的正常行为:两人并列第 3,下一位跳到第 5,中间没有第 4。如果业务要求名次连续,换用 =COUNTIF($B$2:$B$11,">"&B2)+1(降序中国式排名),名次就不会跳了。
怎么做到并列但不跳号?
用 COUNTIF 中国式排名:=COUNTIF($B$2:$B$11,">"&B2)+1(降序)或 =COUNTIF($B$2:$B$11,"<"&B2)+1(升序)。或者在超级表里用「按字段排序」,直接按行序给名次,天然连续。
怎么分组内排名(每个部门单独排)?
Excel 里要用 COUNTIFS 加上部门条件:=COUNTIFS($C$2:$C$11,C2,$B$2:$B$11,">"&B2)+1(C 列是部门,B 列是数值)。超级表里更直接:开启分组汇总按部门分组,再对组内的数值字段执行排序,每个分组各自产生连续名次,不需要额外写公式。