年度考核如何实现排名?

2020-04-17 10:07:06 浏览数 (2)

说到排名,大家是再熟悉不过了。从还在学校读书时候的分数排名,到现在出来工作了,只要有考核的需要,也都会涉及到排名。

下面就来学习一下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函数的结合或者借助数据透视表来实现排名。

0 人点赞