中国式排名又一种方法(简单的思路,不简单的公式)
昨天我们说过美国式排名和中国式排名,美国式排名比较简单,中国式排名有点复杂。今天来说中国式排名的另一种方法,思路是比较简单,但是公式写起来还是有点复杂的。不懂公式也没关系,我会教你用基础命令分步操作。
-01-
具体应用
1.求中国式排名
昨天的公式为=SUM((B$2:B$9>=B2)/COUNTIF(B$2:B$9,B$2:B$9)),按ctrl+shift+enter,下拉完成。不知道你学会了没有。
今天的公式为=MATCH(B2,LARGE(IF(MATCH(B$2:B$9,B$2:B$9,)=ROW($2:$9)-1,B$2:B$9,""),ROW($1:$100)),),按ctrl+shift+enter,下拉完成。公式还是比较长的。
先说下思路吧,第一步将分数中不重复的提取出来,基础操作如下,用的是删除重复值。
第二步,将不重复的分数进行降序排序。这样就是第1名,第2名。。。的顺序。
第三步,查找每个分数在上一步排好序的分数区域中的位置,就是它的中国式排名。
思路就是这样的,先将不重复的分数筛选出来,然后将其降序排序,最后查找每个分数在其中的位置。分步操作要用到辅助列,如何不用辅助列,只要一条公式就将其完成呢?
其实就是按照上面那3步操作,只不过要想办法将它们组合在一条公式中。
第一步,筛选出不重复的分数,用的公式为=IF(MATCH(B$2:B$9,B$2:B$9,)=ROW($2:$9)-1,B$2:B$9,"")。关键部分还是match函数。
MATCH(B$2:B$9,B$2:B$9,)这部分的结果为H列所示,它是查找每个分数在分数区域中的位置,是数组用法。ROW($2:$9)-1这部分的结果为I列所示,相当于从1开始的序号。然后这2部分比较看它们是否相等,如J列所示。当它们相等时,返回true,对应的分数也是第1次出现的。当结果是false时,对应的分数是重复出现了。
=IF(MATCH(B$2:B$9,B$2:B$9,)=ROW($2:$9)-1,B$2:B$9,"")这个公式的意思就是如果它们相等,就返回对应的分数,否则返回空文本""。结果为{96;73;80;"";19;"";33;""},可以和上图对比一下,这样就把不重复的分数筛选出来。
第二步,将筛选出来的分数进行降序排序,用的函数为large。它是返回数组中第k个最大值。我现在让它返回第1到第100个最大值,公式为=LARGE(IF(MATCH(B$2:B$9,B$2:B$9,)=ROW($2:$9)-1,B$2:B$9,""),ROW($1:$100))。它返回的结果为{96;80;73;33;19;#NUM!;#NUM!;#NUM!.....},后面有很多错误值,我就用......代替了。这样就排好序了。
第三步,查找分数在数组中的位置,还是用match函数,最后的公式为=MATCH(B2,LARGE(IF(MATCH(B$2:B$9,B$2:B$9,)=ROW($2:$9)-1,B$2:B$9,""),ROW($1:$100)),)。
很多长公式都不是一下就写出来的,都是先拆解问题,然后考虑每一小步用什么函数可以解决,最后再想办法把它们组合起来。所以拆解问题的思路很重要,如果不懂公式,可以先用基础操作和辅助列完成。
链接:
https://pan.baidu.com/s/1oSb6UnWfNtuqknf52w-5iA
提取码:5m9c