说到排名,大家是再熟悉不过了。从还在学校读书时候的分数排名,到现在出来工作了,只要有考核的需要,也都会涉及到排名。
下面就来学习一下Excel里常见的排名方法吧。
1.如何排名?
排名函数(rank),返回指定数值在特定区域中的排名。其语法规则是:
代码语言:javascript复制rank(要进行比较的数值,在哪个区域比较,降序还是升序)
第三个参数“降序还是升序”,降序是0,升序是1,如果省略这个参数,则默认为按照降序来进行排名。
案例:按分数从大到小对学生进行排名
在C2单元格输入公式:
代码语言:javascript复制=rank(B2,$B$2:$B$11,0)
然后向下填充公式,即可求得所有学生的排名。
除了用rank函数来进行排名,我们还可以转换一下思维:以猴子为例,我们要求猴子的分数在所有学生中的排名情况。
2.如何选择排名方式?
从上面的案例中,我们看到,猴子和马云都是排第1的,有两个第1;而后就是苏火火,排在了第3,而不是第2。
那么如何实现,猴子和马云都是排第1,苏火火排在第2(而不是第3)呢?
在C2单元格,利用countif函数,写下如下公式:
代码语言:javascript复制=sumproduct(($B$2:$B$11>$B2)/countif($B$2:$B$11,$B$2:$B$11)) 1
下拉填充公式,完成排名。可以看到,两个并列排名第1之后,紧随的是第2,而不是从第3开始。
那么,这个公式怎么理解呢?我们拆解每一步来看下。
第一步:$B$2:$B$11>$B2
意思就是拿B2:B11这个区域的每个数值,都与B2一一进行比较,然后返回逻辑值。如果大于就返回真(true),小于等于就返回假(false)。
第二步:countif($B$2:$B$11,$B$2:$B$11)
这是条件计数,对满足条件的值进行计数,它的运算过程是:
countif($B$2:$B$11,B2)
countif($B$2:$B$11,B3)
countif($B$2:$B$11,B4)
……
意思是,统计B2单元格的值在B2:B11区域中出现的次数;统计B3单元的值在B2:B11区域中出现的次数;统计B4单元格的值在B2:B11区域中出现的次数……
第三步:($B$2:$B$11>$B2)/countif($B$2:$B$11,$B$2:$B$11)
第一步得到的是逻辑值,第二步得到的是每个数值出现的次数,逻辑值在参与运算的时候,true=1,false=0。也就是说条件$B$2:$B$11>$B2如果成立,则返回1,如果不成立,则返回0。0除以任何数,结果都为0;而1除以出现的次数,就使得重复出现的数值只计算一次,避免重复计数。
第四步:
sumproduct(($B$2:$B$11>$B2)/countif($B$2:$B$11,$B$2:$B$11)) 1
用sumproduct函数对结果进行加总求和,即对大于当前值的个数进行求和,如对大于B2的个数进行求和,共有N个,那么,B2的排名就 N 1。
如果你对上面的公式理解起来实在很费劲,其实对于这种排名还有一个更简单的方法,那就是借助数据透视表。
3.如何用数据透视表实现排名?
在数据区域任意一单元格单击,插入数据透视表
把“姓名”拖到行,把“分数”拖到值,连续拖两次。
然后对“分数2”进行“值”字段设置
在弹出的【值字段设置】窗口里,将值显示方式设置为“降序排列”
如图,就得到了中式排名的效果:
修改透视表的列名称,同时对排名进行降序排列,最终如下:
4.总结
排名可以使用rank函数来实现,默认的排名不符合使用习惯,可以使用sumproduct和countif函数的结合或者借助数据透视表来实现排名。