排名的本质是什么呢?排名就是一个数字在一组数字中从大到小或者从小到大中的位置。西方的排名方式与中国的排名的方式大体相同,但却也有一处非常明显的差别。那就是对于并列名次后的处理。如下图所示:
如果数据不重复的情况的下,不管中国式排名还是西方式排名,都是一样的,用rank函数即可搞定。
以上图为例公式即为:
=RANK(B2,$B$2:$B$17)
然而中国式排名显然用这个公式就不合适了,那么该如何做呢?
1.排名都是拿某个数字跟包含这个数字的一组数字比较大小,看看这一组数字大于等于(或者小于等于)这个的数字有多少个,有第一个就是排名第1,有2个就是排名第二……,rank函数也是这个逻辑。根据这个逻辑我们暂时得到以下的公式:
=$B$2:$B$17>=B2分别拿$B$2:$B$17区域中的每个数字与B2的值进行比较,如果其中有数字大于等于B2,则返回TRUE,否则返回FALSE。这时我们在此公式的前面加两个负号即可将其转换为1和0.
=--($B$2:$B$17>=B2)当$B$2:$B$17中有重复数字时,我们得到至少两个重复的逻辑值。
2.然后我们通过countif函数求出这一组数字中每个数字的个数。如下图所示,我们利用countif函数可以办到这一点:
{=COUNTIF(B2:B17,B2:B17)}
非重复数字为1,重复数字则是有多少个相同数字,则得出同样的个数。我们用1去除这个结果,然后外层嵌套一个sum函数即可得到这一串数字中的不重复数字的个数:
{=SUM(1/COUNTIF(B2:B17,B2:B17))}
3.我们将1和2的公式整合在一起就可以得到每个值的中国式排名了。
{=SUM(--($B$2:$B$17>=B2)/COUNTIF($B$2:$B$17,$B$2:$B$17))}由于公式需要向下复制,因此要实用绝对引用。