Excel 公式

Excel RANK 排名函数怎么用(含并列排名)

更新于 2026-06-04 · 阅读约 7 分钟

给一列成绩或销售额排名次,听起来简单,真写起来却有三道坎:参数怎么记、两个人同分排名会跳号、中国式排名(并列不跳号)公式又绕得要命。本文一次讲清,再教你用超级表把这件事做得更简单。


超级表中按数值排序并排出名次的示意
给数值排名次——超级表里按字段排序 + 公式面板即可。

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(当前值, $锁区域$, 0降序/1升序) — 三个槽,中间那个一定要加 $。

并列排名问题: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 里更稳。

为什么说中国式排名公式"很绕"
COUNTIF 里用 ">"&B2 拼比较条件、结果再 +1,不直观;SUMPRODUCT 用数组乘法计数,初学者更难理解。两个都需要记,每次用还容易忘大小于号方向。

这些写法的麻烦

把上面几种方法汇总一下,用起来的麻烦主要有四点:

  • 范围必须手动锁 $,拖公式前容易忘。忘了加绝对引用,整列名次全错,还不会报错提示,很难发现。
  • 跳号 vs. 不跳号要切换两套公式。用 RANK 是跳号,要不跳号就得改成 COUNTIF/SUMPRODUCT,不能在同一个函数里切换。
  • 中国式排名公式难记,方向易写反。">"&B2 降序对应大于,升序对应小于,经常混淆。
  • 分组内排名更复杂。如果要「每个部门内部各自排名」,要用 COUNTIFS 多加一个条件,公式又长一截。

更简单:超级表排序 + 公式面板出名次

超级表(TableDI)是一款桌面端高能表格助手,macOS / Windows 均可用,离线运行、无需登录。排名这件事在超级表里可以拆成两步完成,不用背函数参数:

  1. 把含成绩或销售额的表格导入超级表(Excel / CSV 拖进来即可)。
  2. 点击成绩列的列头,选择「按字段排序」,选降序(从大到小)。数据立刻按分值高低重排,视觉上名次一目了然。
  3. 新建一列「名次」,打开公式面板——点选运算符和字段,用可视化方式搭出排名计算逻辑(例如:行号、COUNTIF 条件);不需要手动拼 ">"& 或记绝对引用,面板会帮你处理。更通用的公式面板用法可参考用公式面板代替 VLOOKUP
  4. 如果要分组内排名(每个部门单独排),超级表支持分组汇总,按部门分组后再对组内数值排序,不需要额外写 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 列是数值)。超级表里更直接:开启分组汇总按部门分组,再对组内的数值字段执行排序,每个分组各自产生连续名次,不需要额外写公式。

不想再跟排名公式较劲?

免费下载超级表,排序 + 公式面板两步出名次,离线本地不上云

免费下载(macOS / Windows)