在 excel 里面做名次排名,核心是使用 rank 系列函数,最基础就是 rank 函数,可以对一列分数或者数值自动生成排名,同时还有 rank.eq 和 rank.avg 两个新版函数,用来处理同分排名的不同规则,除了函数排名之外,也可以借助排序功能实现可视化排名,很多新手做 excel 名次排名出错,主要是没有锁定数据区域,下拉填充之后引用范围发生偏移,还有不清楚同分的时候排名序号该怎么设置,excel 名次排名底层逻辑,就是拿当前单元格的数值,和整列全部数值做对比,统计有多少个数值比它更大,再计算出对应的名次,支持升序排名和降序排名,降序就是数值越大名次越靠前,升序就是数值越小名次越靠前,理解这个逻辑之后,就可以根据业务需求选择对应的排名方式。
第一种 rank 函数 基础名次排名
rank 是最经典的排名函数,适合绝大多数普通分数排名场景,也就是高分排第一名的需求。
基础公式
=RANK (B2,$B$2:$B$20,0)
公式解释,B2 是当前要排名的单元格,$B$2:$B$20 是全部参与排名的数据区域,这里一定要加美元符号锁定区域,最后面的数字 0 代表降序排名,数字 1 代表升序排名。
操作步骤
第一步 点击排名结果列的第一个单元格,也就是 C2 单元格
第二步 输入上面 rank 公式,把里面的数据区域改成自己表格实际范围
第三步 按下回车,得到第一条数据的名次
第四步 鼠标移动到单元格右下角,光标变成黑色十字填充柄,下拉填充整列,所有数据就全部生成名次
重点注意
如果不加美元符号锁定区域,下拉的时候,B2:B20 会自动变成 B3:B21,每一行的对比范围都会偏移,最终排名全部错乱,这个是新手最高频错误。
第二种 rank.eq 函数 同分同名次
rank.eq 是新版 excel 替换传统 rank 的函数,规则和旧版 rank 完全一致,遇到同分的时候,两个数据占用同一个名次,后面的数据名次会跳号,比如两个第一名,下一个直接是第三名。
公式
=RANK.EQ (B2,$B$2:$B$20,0)
适用场景
考试成绩,竞赛打分,业务积分排名,这种业务上认可同分并列名次,后续名次跳号的场景。
第三种 rank.avg 函数 同分平均名次
rank.avg 和 rank.eq 最大区别,就是同分的时候,会计算并列位置的平均名次,比如两个第一名,两个同分的名次都显示 1.5,不会出现跳号,适合统计分析类表格,需要连续名次不跳号的场景。
公式
=RANK.AVG (B2,$B$2:$B$20,0)
适用场景
科研数据统计,实验数据排序,需要平均位次计算,不希望名次跳空的表格。
第四种 排序方式实现名次排名
如果不需要公式自动更新,只是临时生成排名序号,可以直接用排序功能,排序之后手动填写序号,或者排序之后填充 123 连续编号。
操作步骤
第一步 选中全部数据区域,包含对应的姓名和分数
第二步 点击顶部数据选项卡,选择排序
第三步 主要关键字选择分数那一列,次序选择降序
第四步 排序完成之后,在旁边辅助列填充连续序号 1,2,3 作为名次
缺点说明
这个方法是静态排名,后续原始分数修改之后,名次不会自动刷新,需要重新排序,适合一次性统计报表。
第五种 中国式排名 同分不跳号
rank 系列函数有一个短板,同分并列之后后面名次会跳号,很多国内业务需要中国式排名,也就是同分同名次,但是下一名次不跳号,比如两个第一名,下一个就是第二名,这个 rank 原生函数做不到,需要搭配 countif 组合公式。
中国式排名公式
=SUMPRODUCT ((B$2:B$20>B2)/COUNTIF (B$2:B$20,B$2:B$20))+1
公式原理,统计比当前数值大的不重复数值个数,再加 1,就可以实现同分并列,名次连续不跳号。
操作步骤
第一步 在排名单元格输入这个组合公式
第二步 锁定数据区间,下拉填充整列
第三步 检查同分数据,确认名次不会跳号
各类排名方法对比表格
| 方法 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| rank | 通用普通排名 | 兼容性好,旧版 excel 支持 | 同分之后名次跳号 |
| rank.eq | 新版 excel 标准排名 | 官方推荐函数,规则和 rank 一致 | 同分之后名次跳号 |
| rank.avg | 同分需要平均位次 | 同分计算平均名次 | 结果会出现小数名次 |
| 排序填充序号 | 一次性静态排名 | 操作简单不用记公式 | 数据改动不会自动更新 |
| 中国式排名公式 | 国内业务同分不跳号 | 名次连续,符合国内习惯 | 公式复杂,理解难度高 |
特殊情况处理要点
第一 空单元格和文本单元格,如果排名区域里面有空单元格,rank 函数会自动忽略空单元格,但是如果单元格里面是文本,函数会报错,需要提前清理文本内容。
第二 并列名次重复,rank.eq 同分之后跳号,如果业务不接受跳号,就更换成中国式排名公式。
第三 筛选状态排名,如果表格开启筛选,普通 rank 函数还是会统计全部行包含隐藏行,想要只针对可见行排名,需要搭配 subtotal 或者动态数组函数处理。
第四 重复数值,countif 在中国式排名公式里面,就是专门解决重复数值,避免重复数值重复计数,保证排名准确。
第五 升序排名,把公式最后参数改成 1,就变成数值越小名次越靠前,比如用时排名,跑步秒数越小名次越高,就使用升序。
总结
普通高分在前排名,优先 rank 或者 rank.eq 函数,记得锁定数据区域,下拉填充,如果同分需要平均位次,选择 rank.avg,如果业务要求同分并列但是后面名次不跳号,就使用中国式排名组合公式,如果只是临时一次性排名,可以直接排序之后填充序号,做 excel 名次排名的时候,重点留意区域锁定,同分规则,还有升序降序参数,这三点把控好,排名结果就不会出错。
【常见问题】
问题 1 excel 名次排名怎么弄,下拉之后名次全部错乱
回答 1 excel 名次排名怎么弄出现下拉错乱,核心原因是数据区域没有加美元符号锁定,下拉填充的时候对比范围自动偏移,修改公式,把排名区域改成绝对引用,重新下拉,就可以修正 excel 名次排名错乱的问题。
问题 2 excel 名次排名怎么弄,同分之后下一名直接变成第三名
回答 2 excel 名次排名怎么弄出现名次跳号,是因为使用 rank 或者 rank.eq 函数,这个函数本身规则就是同分并列之后跳号,如果不想跳号,需要更换中国式排名公式,实现 excel 名次排名同分之后名次连续。
问题 3 excel 名次排名怎么弄,想要分数越小名次越高
回答 3 excel 名次排名怎么弄想要小数值排前面,修改 rank 函数最后一个参数,把 0 改成 1,也就是升序排名,数值越小对应的名次越靠前,适合计时类数据完成 excel 名次排名。
问题 4 excel 名次排名怎么弄,有没有不用函数的办法
回答 4 excel 名次排名怎么弄可以不用函数,选中全部数据,进入数据选项卡执行降序排序,排序完成之后填充连续数字作为名次,这种是静态 excel 名次排名,原始分数变动之后名次不会自动更新。
【免责申明】
本文教程基于主流 excel 版本编写,rank.avg rank.eq 新版函数在旧版 excel 不支持,中国式排名组合公式运算量较大,数据行数很多的时候计算速度变慢,操作前建议备份原始表格,本文仅作为技术参考,不承担因操作失误带来的数据错误相关责任。


