|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
Excel中排名,大家习惯分为美式排名和中国式排名。 美式排名通常使用RANK函数,用法比较简单,可以参考文章:rank函数实例讲解。
什么是excel中国式排名呢?咱们中国人的习惯,比如无论有几个并列第3名,之后的排名仍应该是第4名,即并列排名不占用名次,这就是中国式排名。
下面这个案例,也是IT部落窝论坛的excel中国式排名练习题,语文成绩有两个72分,并列第一名,随后的66分为第二名……在C2单元格写公式,完成中国式排名。
中国式排名,其实就是对一个数在一组数据中排名第几的统计,重复数排名相同,比它小的最大数的排名只低一级。通常可以使用countif,frequency和SUMPRODUCT等函数结合实现。
下面提供几种相关的中国式排名解法:
中国式排名解法一:
在C2单元格输入公式,=SUM(IF($B$2:$B$6>B2,1/COUNTIF($B$2:$B$6,$B$2:$B$6)))+1,然后按ctrl+shift+enter三键结束。下拉复制公式即可得出其余的排名。
公式解释:
COUNTIF($B$2:$B$6,$B$2:$B$6)部分:这是一个数组运算用法,它的运算过程是:
COUNTIF($B$2:$B$6,B2)
COUNTIF($B$2:$B$6,B3)
COUNTIF($B$2:$B$6,B4)
……
分别统计B2、B3、B4单元格在B2:B6区域中出现的次数。得到结果为:1,1,1,2,2。其中“1”代表此单元格中的内容在B2:B6区域中只出现一次,即没有重复;“2”代表此单元格中的内容在B2:B6区域里重复2次。这一步的操作,可以得到数据是否有重复和以及重复的次数。
1/COUNTIF($B$2:$B$6,$B$2:$B$6)部分:
在公式编辑栏选中这部分公式,按F9键查看运算结果为:{1;1;1;0.5;0.5}。
IF($B$2:$B$6>B2,……)部分:
IF第一参数:$B$2:$B$6>B2的结果是:{FALSE;TRUE;FALSE;TRUE;TRUE},意思是B2单元格中的内容分别和B2:B6区域内的各个单元格内容进行大小比较。
“IF($B$2:$B$6>B2,1/COUNTIF($B$2:$B$6,$B$2:$B$6))”,这里IF省略了第三参数,因此当得到FALSE时,此时将返回结果“FALSE”,当得到TRUE时,此时将返回对应的结果,得到的结果是{FALSE;1;FALSE;0.5;0.5}。
接着SUM函数对IF函数内的结果进行加总,得到结果“3”。为什么还要再加上“1”呢?原因是IF函数内的测试条件是“>”,对于“B2:B6区域”里的最大值“72”而言,得到的结果是{FALSE;FALSE;FALSE;FALSE;FALSE},那么SUM函数计算得到的值就是“0”,显然排名第0位,不符合常识,因此要额外加上“1”。
这个中国式排名公式的核心部分就是:“1/COUNTIF($B$2:$B$6,$B$2:$B$6)”,目的是避免重复计算相同项。
中国式排名解法二:
C2单元格输入公式:=SUMPRODUCT(($B$2:$B$6>=B2)/COUNTIF($B$2:$B$6,$B$2:$B$6)),下拉复制即可。
这个公式的思路也是不重复计数。具体的公式解释,请参看文章:http://www.ittribalwo.com/show.asp?id=1257
中国式排名解法三:
使用FREQUENCY 函数的数组解法完成。B2公式为:=SUM(--(FREQUENCY(B$2:B$6,IF(B$2:B$6>=B2,B$2:B$6))>0)),三键结束。
中国式排名解法四:
=SUMPRODUCT((B$2:B$6>B2)*(1/(COUNTIF(B$2:B$6,B$2:B$6))))+1
中国式排名解法五:
=SUM(--IF($B$2:$B$6>=B2,MATCH($B$2:$B$6,$B$2:$B$6,)=ROW($2:$6)-1))
|
评分
-
1
查看全部评分
-
|