这里有一个员工的得分排名表,我们现在要做的就是根据员工的得分情况算出各自的名次(得分越高,名次越靠前),这个在我们的日常工作中可谓是经常要做的一件工作,而我们Excel是自带排名函数的就是RANK()函数,但是如果用RANK()函数算出来的名次,就和上图中的结果一样(即:美国式排名),这样排的话会有一个问题,那就是如果遇到得分一样的情况,在计算出相应的并列名次后,在它下面的名次中会有相应的名次预留,出现几次并列名次,就会预留几个名次,这样就导致了名次的不连续性,如:上图中的员工C和员工D,他们都是并列第3名,但是在计算下一名员工E的时候,他的名次是5,而不是我们想要的4,包括下面的员工Q,也是这个情况,这在实际工作中显然不符合我们的排名习惯,那么问题来了:如何根据员工得分,来一个“中国式的排名”呢?
我们在D列建立辅助列,并命名“中国式排名”,在D2中输入公式D2=SUMPRODUCT(($B$2:$B$18>B2)/COUNTIF($B$2:$B$18,$B$2:$B$18))+1,
回车后,双击填充柄,向下复制工公式,即可得到中国式排名结果:
我们重点来看下这个公式内部参数,分为两部分:第一部分的逻辑表达式部分$B$2:$B$18>B3,这个是判断所有员工的得分是否都大于当前员工的得分,其结果返回为TRUE或FALSE,而代表的运算值为1或0,而第二部分COUNTIF($B$2:$B$18,$B$2:$B$18),这个用法我们还是第一次碰到,因为,按我们之前的课程的话,COUNTIF()函数第二个参数为一个单元格地址,而不是像本题一样是一个单元格区域,那么本题的用法实际上就是数组公式的用法了,当第二个参数为一个单元格地址时其返回值为一个结果,而第二个参数为多个地址的引用时,其返回结果为一组数值,所以本题COUNTIF的结果是一列上得分对应的个数明细(共计17条),而前面的逻辑运算结果也是对应17条,这样两者相除,对应得出相应的1和0,再用SUMPRODUCT()求和,最后+1的目的就是把当前自身也算在内的。如果还是不明白的,可以参照前面章节中,启用“公式求值”功能,来看一下每一步的计算分析。
好了,今天的函数课程就和大家分享到这里,喜欢的朋友请关注、转发,期待下期精彩课程。