夜雨聆风学习资料网

ARTICLE · 1209056

Excel RANK函数排名怎么用,重复值如何处理

Excel RANK函数排名怎么用,重复值如何处理

RANK函数是Excel里专门计算名次的函数,用法一句话说清:把一个数字放进一组数字里,返回它排在第几名。做成绩排名、业绩排名时最常遇到的麻烦是重复值——出现两个第2名之后,下一个到底显示第3还是第4?这取决于你用RANK.EQ还是RANK.AVG。下面从语法开始,把RANK函数排名和重复值处理一次讲透。

一、RANK函数的基本语法

写法是 =RANK(number,ref,[order]),三个参数分别是:要排名的数字、参与比较的数字区域、排序方式。

假设B2:B11是10位同学的销售业绩,要在C列显示名次,在C2输入:

=RANK(B2,$B$2:$B$11,0)

回车后向下填充到C11即可。注意区域务必用绝对引用(选中区域按F4切换为$B$2:$B$11),否则下拉时区域跟着移动,名次会全错。

在Excel 2010及以后的版本中,RANK属于兼容函数,打开旧文件仍可正常使用;新版本同时提供RANK.EQ和RANK.AVG,官方推荐新公式改用后面这两个。

二、order参数:升序还是降序

  1. 省略order或填0:按降序排名,数值最大的是第1名,适合业绩、分数、销量。
  2. order填1或其他非零值:按升序排名,数值最小的是第1名,适合用时、体重、错误次数这类越小越好的指标。
  3. order只判断“是否为0”,所以填0与省略等价,填2、填-1都按升序处理。

例如比赛用时在B2:B11,公式写成 =RANK(B2,$B$2:$B$11,1),用时最短的自动排第1。

三、重复值如何处理:EQ、AVG与并列不跳号

假设成绩是90、85、85、80,几种处理方式结果完全不同:

函数
写法
名次结果
RANK / RANK.EQ
=RANK.EQ(B2,$B$2:$B$11,0)
1、2、2、4(并列后跳号)
RANK.AVG
=RANK.AVG(B2,$B$2:$B$11,0)
1、2.5、2.5、4(取平均名次)

所以“重复值如何处理”的答案很直接:要中国式排名(1、2、2、3,并列不跳号),上面两个都不能直接用,需要改写公式。用COUNTIF配合就能实现:

=SUMPRODUCT((B$2:B$11>B2)/COUNTIF(B$2:B$11,B$2:B$11))+1

这个写法向下填充后,90分第1,两个85分都是第2,80分第3,名次连续不跳号。如果只是想让并列的人在报表里自动排出先后(比如按工号决定谁在前),可以用:

=RANK.EQ(B2,$B$2:$B$11,0)+COUNTIF($B$2:B2,B2)-1

它把先出现的重复值名次提前一位,结果变成1、2、3、4,每个人名次唯一,不会再出现两个第2名。

四、按部门分组排名

如果A列是部门,要在每个部门内部单独排名,用COUNTIFS把“同部门且业绩比自己高的”数出来即可:

=COUNTIFS($A$2:$A$100,A2,$B$2:$B$100,">"&B2)+1

假设A2是“销售一部”、B2是业绩,公式返回该员工在本部门的排名,跨部门互不影响,而且不需要事先排序。

五、常见报错排查

  • 返回#N/A:ref区域里找不到number,检查是否有文本型数字、前后空格或全角字符。
  • 名次全是1:区域没有绝对引用,或ref引用成了单个单元格。
  • 空白行也出名次:空值在降序中同样参与计数,建议套一层IF,写成 =IF(B2="","",RANK(B2,$B$2:$B$11))。

常见问题

  1. RANK函数能对文本排名吗?不能,它只处理数值,文本会被忽略或导致结果异常。
  2. 源数据改了名次会自动更新吗?会,RANK函数是动态计算的,这也是它比手工排序省事的地方。
  3. WPS表格怎么用?WPS表格同样支持RANK、RANK.EQ、RANK.AVG,写法与Excel完全一致。
  4. 只想标出前三名怎么办?在名次旁加一列 =IF(C2<=3,"前3",""),再配合条件格式标色即可。

相关学习资料