先看一个排名案例:
在一般情况下,直接使用RANK函数进行排名属于美式排名,例如在单元格H2输入公式=RANK(G2,$G$2:$G$10),两个并列第3名后,“张子轩”排名第5,没有第4名。
而在中国的排名习惯中,无论有几个第3名,之后的排名仍是第4名,即并列的排名不占用名次。例如I列中两个并列第3名后,“张子轩”排名第4。
再进一步分析,中国式排名,重复数排名相同,比它小的最大数的排名只低1名。所以,我们通常使用COUNTIF、SUMPRODUCT、FREQUENCY等函数结合来完成中国式排名。
绝招1:SUMPRODUCT与COUNTIF组合
在单元格I2输入公式=SUMPRODUCT(($G$2:$G$10>=G2)/(COUNTIF($G$2:$G$10,$G$2:$G$10)))
$G$2:$G$10>=G2计算结果为{TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE},意思就是找到大于等于G2的分数,返回逻辑值。如果大于等于就是TRUE=1,小于等于就是FALSE=0。
COUNTIF($G$2:$G$10,$G$2:$G$10)计算结果为{1;1;2;2;3;3;3;2;2},说明总分265分有1个,260分有1个,253分有2个,248分有3个,241分有2个,就是求出G2:G10中的每个数据在G2:G10全部数据中有几个相同的。
($G$2:$G$10>=G2)/(COUNTIF($G$2:$G$10,$G$2:$G$10))计算结果为:{1;1;0.5;0.5;0.3333;0.3333;0.3333;0.5;0.5},这样两个0.5加起来就是1,三个0.3333加起来是1,就做到相同分数只计算一次排名。
再用SUMPRODUCT乘积求和,完成中国式排名的计算。
SUMPRODUCT与COUNTIF组合公式还有另外一种变形=SUMPRODUCT(($G$2:$G$10>G2)*(1/(COUNTIF($G$2:$G$10,$G$2:$G$10))))+1,原理相同。
绝招2:FREQUENCY 函数的数组用法
在单元格I2输入公式=COUNT(1/(FREQUENCY(G$2:G$10,IF(G$2:G$10>=G2,G$2:G$10))>0)),Shift+Ctrl+Enter三键结束。
其中,IF(G$2:G$10>=G2,G$2:G$10)用来判断当前总分是否大于等于G2,如果是则输出结果为总分,如果不是,则返回值FALSE。
Frequency()是一个频数函数,统计各区间的频数,它有两个参数,用逗号分开。第一个参数是要进行统计的数据,即学生总成绩,第二个参数是分组的依据,也就是分段的界值。
利用Frequency函数第二参数忽略逻辑值的特点,将大于等于G2单元格的值做为分段点。再用COUNT函数统计非0值的个数,即得到学生成绩中国式排名。
因为Frequency()返回的是一列数值,要用数组公式的形式输入,因此,在编辑栏输入完公式后需按下组合键Ctrl+Shift+Enter,使之成为数组公式从而完成计算。
绝招3:直接排序比较法(简单粗暴)
对G列单元格的总分由高到底排序,第一个总分排名第1,当下一个总分等于上一个单元格总分时,则排名相等,下一个总分不等于上一个总分时,则排名加1。
在单元格I2输入1,在I3单元格输入公式=IF(G3=G2,I2,I2+1)
当然我们还有MATCH函数与ROW函数比较法:
在单元格I2输入公式=SUM(--IF($G$2:$G$10>=G2,MATCH($G$2:$G$10,$G$2:$G$10,)=ROW($2:$10)-1)),Shift+Ctrl+Enter三键结束。
总之,中国式排名的方法有很多种,使用公式会稍微复杂一些,但是不需要对数据进行处理,可直接使用。而先排序再排名则简单粗暴,非常适合小白们使用。
今天的教程就到这里啦。有收获的自动打赏、转发哈。