countif求美式排名和中式排名
关于countif的基础用法,之前已经说过了,如果不清楚请搜索历史文章,输入关键字countif进行搜索。今天说一下用countif解决排名的问题,排名有美式排名和中式排名。
-01-
具体应用
1.求美式排名
如下图所示,有一些姓名和分数,求一下分数的美式排名。美式排名有什么特征呢?下图中有2个96并列第1,下一个分数80应该算第2名,但在美式排名中它算第3名。那么这个排名是怎么算出来的,在C2单元格中输入公式=COUNTIF(B$2:B$9,">"&B2)+1,下拉完成。
解释一下这个公式,就是在分数这个区域中统计出大于每个分数的个数。举例说明,先看第1个分数96,在这个区域中大于96的有0个,那就是没有大于它的,所以它是第1名。
再看第2个分数73,在这个区域中大于73的有3个,所以它是第4名。需要在countif后面加1。
看一下80分为什么是第3名,因为大于80分的有2个,这个公式刚好符合美式排名。
求美式排名就说到这里,比较简单。当然还可以有其他方法,比如rank函数等等,你可以自己想想其他的方法。
2.求中式排名
下面求中式排名,先说一下中式排名的特点,有2个96并列第1,下一个80就是第2名。中式排名还是有点复杂,在D2单元格中输入公式=SUM((B$2:B$9>=B2)/COUNTIF(B$2:B$9,B$2:B$9)),按ctrl+shift+enter三键结束,下拉完成。
其实这个公式可以看作2个部分,第一部分是B$2:B$9>=B2,第二部分是COUNTIF(B$2:B$9,B$2:B$9),如下图所示。现在算的是B2单元格的排名。第一部分就是用分数的区域和B2比较,返回F列的结果;第二部分是用countif的数组用法,统计每个分数在分数这个区域中出现的次数。比如96出现2次,其他的都是1次,结果如G列所示。
然后用第一部分除以第二部分就返回H列的结果,最后用sum对H列的结果求和,就是B2的中式排名。虽然有2个96分,但最后将它们的结果算作1。实际就是统计不重复的个数,如果有重复将其看作1个。
按照这个方式,你可以看看B3为什么是第3名,B4为什么是第4名,...
实际上中式排名就是有条件的统计不重复值的个数。之前我们学过这个公式=SUM(1/COUNTIF(B2:B9,B2:B9))是求不重复值的个数,现在将1换成B$2:B$9>=B2,实际就是给它添加了个条件,在大于等于B2的数字中统计不重复值的个数。
链接:
https://pan.baidu.com/s/1iQFHehKakwBEffA3mjO1xw
提取码:5pbm