EXCEL多字段排名次问题 mysql 成绩排名 字段


EXCEL多字段排名次问题 mysql 成绩排名 字段
EXCEL多字段排名次问题

一、问题:

有一个成绩数据库,需要对总分进行排名,获得考生的总分排名。但考生数量大,总分有重复,比如全省高考成绩中,并列同一分数的有时多达近千人。所以须按某种规定,“总分”如重复,再按其他学科成绩再进行小名次排名。比如,某地排名次规则为:总分如相同,再按“语数外”之和排,如重复再按“综合”,再重复则再按“C1”,最后按“C2”。如以上全部重复,则视同排名一致,录取时同等对待。这样,重复名次将大大减少。

不要指望在EXCEL中使用“排序”功能就能排定名次,主要是并列名次处无法反映出来。且按上述规定,有5个字段需要参与排序,因EXCEL2003仅支持3个字段排序,所以无法实现上述要求(EXCEL2010貌似有10个字段可用于排序)。但即使EXCEL2010版本能够完成5字段排序,也没有获得“名次号”。如果排序后用手工拖拉法生成一正整数序列,因涉及到重名次,该序列不能作为正确的名次号。

看来只能寻求EXCEL内置函数来解决,经过对EXCEL内置函数的一番学习并进行测试,终于找到了比较简单的方法进行排名次。

二、示例:


说明:左侧绿色标记的A列—K列为原始数据,右侧粉色标记的L列—P列是排名次。

L列“排名1”,公式 =RANK(D2,$D$2:$D$115)D2列数据为总分,此公式仅对总分排名次

RANK是排名函数,参数“D2”表示当前参与排名的数据,“$D$2:$D$115”表示绝对引用D2—D115单元格。

表中数据已按名次排序,显露了该函数排名结果,如总分相同则名次相同,但名次号不连续。

M列“TEMP1”,公式 =D2*1000+E2+I2*0.001+J2*0.00001+K2*0.0000001

这是一个临时字段,把参与排名的5个成绩字段合成一个数字,EXCEL的小数可以有15位有效数字,此处用到了13位;

使用这一临时字段的目的,是把5个需要排序的字段合并与一个数字,排名时可以减少重名(5字段完全一致的除外);

N列“排名2”,公式 =RANK(M2,$M$2:$M$115)

可见用TEMP1字段排名后,原许多同名次的已有区分。如“排名1”第13名重复4人,但在“排名2”中已区分开;

O列“全名次”,公式 =L2+(N2-L2+1)*0.01 或=L12&"-"&(N12-L12+1)(注:二种不同显示形式)

为了既能反映并列名次,又能反映并列名次内小排名,本列通过一简单运算对此二种排名进行合成。

P列“分班排名”,公式 =SUMPRODUCT(($A$2:$A$115=$A2)*($D$2:$D$115>$D2))+1

这个公式稍显复杂,函数SUMPRODUCT的功能是对各数组对应元素相乘并求和,上例中该函数的参数是二个数组,即(数组1)*(数组2),其中:

数组1为“$A$2:$A$115=$A2”,表示A2的值即班级号码是否与A列对应单元格是否相等,其结果为一布尔值,0或1。

数组2为“$D$2:$D$115>$D2”,表示D2值即总分是否小于等于D列对应单元格的值,结果也为布尔类型。

函数SUMPRODUCT在计算时,以 P5=SUMPRODUCT(($A$2:$A$115=$A5)*($D$2:$D$115>$D5))为例,共需分以下步骤来完成运算:(注意:此公式计算D5单元格在D列中的名次)

1、先判断第2行:先求数组1,即A5=A2否?(示例中为A5、A2的值均为“301”,所以表达式的值为1)

再求数组2,即D2>D5否?(712>704?)得到值1;

2、将上述数组1的值和数组2的值相乘,即1*1,结果是1。这个结果是对第二行对应相乘得到第1个中间结果(积);

3、然后按上述方法判断第3行,并将判断结果对应相乘,得到第2个中间结果;

4、如此一直判断到结束行(115行),这样数组1和数组2各得到114个值,相乘后得到114个中间结果;

5、最后这114个中间结果相加得到最终结果,并填入P5单元格。

以上公式表示的含义可大致描述为:A列中所有与A5相等的行中,对应D列单元格的值大于D5单元格的有多少个,实际上就是D5单元格的排名。当然计算出来的排名不包括D5自己,所以在例表中的公式还需加1。

以上函数使用时,均可在数据不排序的情况下应用。如下图:

上例中,如果需排序的关键字段列(M列)不是数字,而是文本格式,那就不能简单使用RANK函数,而需要使用SUMPRODUCT函数了。考虑到这个函数计算量比较大,所以如果排名次的数据量比较大,如大于5000,可能会使EXCEL反应速度降低,特别是刚打开数据或更新数据时。大概有稍几秒的反应时间。如果讨厌这种迟延,可以把公式区域复制成数据。

  

爱华网本文地址 » http://www.aihuau.com/a/25101014/213371.html

更多阅读

Excel各种条件求和的公式汇总 excel多条件求和公式

经常和Execl打交道的人肯定觉得求和公式是大家时常用到的。Excel里有哪几路求和公式呢?他们的使用方式又是怎样?我为大家汇总一下。Excel各种条件求和的公式汇总——步骤/方法Excel各种条件求和的公式汇总 1、使用SUMIF()公式的单条件

Excel表格中如何排名? excel表格如何排名次

Excel表格中如何排名?——简介 Excel表格中排名次也是一种使用非常广泛的应用,排序大家都会,如果按分数排序那么名字也会颠倒,我们要保证行列不变的情况下,新增一列排名对需要排序的列进行排名。比如姓名不动得分也不动,我们在名次那列进

linuxrealmedia多路分配器插件的问题 linux io多路复用

centos电影播放器不能用,说缺少realmedia多路分配器插件。我是一个linux大菜鸟,我在网上终于解决了这个问题,大家分享一下:yum install gstreamer-plugins-good gstreamer-plugins-badgstreamer-plugins-ugly 安装MP3插件 yum installvl

声明:《EXCEL多字段排名次问题 mysql 成绩排名 字段》为网友浅若清风分享!如侵犯到您的合法权益请联系我们删除