引言:什么是中国式排名

看到题目,可能有些朋友会产生一个疑问,什么是中国式排名?通过一个例子来看看:

java县市排列 java rank_升序

C列是使用了RANK函数得到的名次,RANK函数的用法很简单:=RANK(要排名的数据,参加排名的区域,升序或者降序)(第三参数为0或者忽略,则为降序,非零值,为升序),D列是中国式排名的结果。直观的看是有些区别,但还是不明白区别在哪,别急,让我们按照成绩由高到低排序以后再看看:

java县市排列 java rank_java县市排列_02

看明白了吗?

区别就是当出现了相同名次的时候,普通的排名会跳过几个名次,C列中没有第三名和第四名,而中国式排名的名次是连续的,这种排名方式更加符合国人的习惯,因此也被称作中国式排名。

那么问题来了,既然使用RANK函数的结果不是中国式排名,要如何才能得到更加符合咱们自己习惯的排名结果呢?下面就为大家介绍三种得到中国式排名的方法:

公式方法

第一种方法需要用到SUMPRODUCT和COUNTIF这两个函数配合完成,D2中输入公式为:

=SUMPRODUCT((B$2:B$15>=B2)/COUNTIF(B$2:B$15,B$2:B$15))

java县市排列 java rank_数据_03

这个公式的思路实际上是统计了大于等于当前成绩的个数,对于新手来说,一下子要理解这个公式是有难度的,其实在实际应用中,还有一个相对简单的公式解法,只需要用到if函数,不过需要进行两步简单的操作来配合,下面就看看第二种可以得到中国式排名的方法。函数简单操作

首先我们按照成绩进行降序排序:

java县市排列 java rank_升序_04

然后在第一个成绩的排名处输入1:

java县市排列 java rank_java县市排列_05

接下来在第二个成绩处输入公式:

=IF(B3=B2,D2,D2 1),下拉即可。

java县市排列 java rank_字段_06

为什么要这样填写呢?

其实很简单,我们只是做了一个判断,比较成绩中的第二个数值与第一个数值是否相等,如果相等就返回与第一个排名一样的排名即“1”,如果不等就在第一个排名基础上返回“ 1”即“1 1”,以此类推!

虽然我们多做了一步排序,但是这两步操作的学习成本与上面那一长串难懂的函数相比是不是简单多了?!

除了以上两种方法之外,最后这一个方法就是利用数据透视表来完成中国式排名,相对于使用公式的方法,透视表简单!易懂!!高效!!!

让我们一起来看操作步骤吧!数据透视表的方法

(透视表的界面根据大家使用软件版本的不同可能略有差异,以Excel2010版进行演示。)

插入数据透视表,将透视结果放置在现有工作表中,点击确定:

java县市排列 java rank_java县市排列_07

将姓名拉到列字段,成绩拉到值字段:

java县市排列 java rank_数据_08

再拉一次成绩到值区域:

java县市排列 java rank_数据_09

接下来鼠标在F列透视表值区域右键,选择 “降序排列”:

java县市排列 java rank_升序_10

鼠标再选择F列透视表值区域点击右键,点击“值显示方式”-“降序排列”:

java县市排列 java rank_java县市排列_11

出现提示时,直接点击确定:

java县市排列 java rank_Java实现中国式排名_12

完成后效果如图:

java县市排列 java rank_字段_13

进行排版完成后的结果(具体操作步骤在文末动图中):

java县市排列 java rank_Java实现中国式排名_14

整个操作如果熟练的话用不了一分钟就可以搞定。

完整的操作和排版过程可以参考动画演示:

java县市排列 java rank_字段_15