RANK函数可实现非破坏性动态排名:降序用=RANK(A2,$A$2:$A$100),升序加第三参数1或用RANK.EQ;并列断层用COUNTIF修正得连续排名;并列平滑用RANK.AVG取平均名次。

你需要在Excel表格里根据学生考试分数自动排出名次,原始数据不能动,排名要随分数变化实时更新,RANK函数就是专为这种非破坏性动态排名设计的工具。
用RANK函数做基础降序排名
第一步:在分数列右侧空白列(比如B2)输入公式 =RANK(A2,$A$2:$A$100),其中A2是第一个学生的分数,$A$2:$A$100是全部分数所在区域,注意用【绝对引用】锁定区域,否则下拉时会错位。
第二步:按Enter确认,B2立刻显示该生在整列中的名次(最高分得第1名)。
第三步:把鼠标移到B2右下角,光标变成实心十字后双击——Excel会自动向下填充公式到A列有数据的最后一行,比拖拽更准、更快,且不会漏掉新增行。
升序排名:适用于耗时、错误数等“越小越好”指标
方法一:直接写公式
在目标单元格输入 =RANK(A2,$A$2:$A$100,1),第三参数填1,表示升序。此时A列最小值排第1名,相同数值仍并列,后续名次跳过。
方法二:用RANK.EQ替代(推荐)
输入 =RANK.EQ(A2,$A$2:$A$100,1)。RANK函数在Excel 2010之后已被RANK.EQ取代,语义更清晰,旧版本兼容性也更好,【避免用RANK导致部分高版本报错】。
解决并列名次后的断层问题
当两个学生同为95分,RANK默认都排第2名,下一个88分就直接跳到第4名——如果你需要“中国式连续排名”(两个第2名后是第3名),就得组合COUNTIF修正:
在C2输入:=RANK.EQ(A2,$A$2:$A$100,0)+COUNTIF($A$2:A2,A2)-1
这个公式里,COUNTIF($A$2:A2,A2)只统计从顶部到当前行之间相同分数出现次数,减1后首次出现不加增量,重复项才逐个+1,从而把名次“挤”回连续序列。
填完C2后,双击填充柄向下复制,全程无需调整引用方式。
用RANK.AVG处理并列值的统计平滑需求
如果并列情况多,你希望排名体现统计分布而非硬性切割,RANK.AVG能自动给相同数值分配平均名次。例如三个90分本该占第5、6、7名,则统一返回6。
在D2输入:=RANK.AVG(A2,$A$2:$A$100,0),回车后向下填充即可。
注意:结果可能是小数(如3.5),若需整数显示,请设置单元格格式为“数值”,小数位数设为0——但不要用INT或ROUND函数四舍五入,那会破坏排名逻辑。


















