excel中的排序函数是哪个?

excel中的排序函数是哪个?,第1张

假设E列是学生成绩,F列是学生成绩的名次,成绩高的为第1名,则可在F列输入公式:

=rank(E2,E$2:E$400)再向下填充公式就行了

最后可按F列排序

对此表排序,主要关键字是班级,次要关键字是总分,然后对每个班级排名,其排名函数所取区域,不同班,其区域不同,要更改函数。排名后复制此列,用选择性粘贴,选数值,在原位粘贴即可。再对此表筛选和排序,名次将不受影响。全年级排名也可以采用此法。

首先这是一种快速排序的算法,你也应该知道,快速排序就是选择序列中的一个元素作为基准,通过循环找到这个基准最终的位置,并把所有小于这个基准的元素移到这个位置的左边,大于基本的元素移到右边,这样再对这个基准的左右两边分别递归调用自己,最终就能得到排序的结果。

再来解释一下这个例子,它选择的基准就是v[(left+right)/2],然后将这个基准雨v[left]交换,现在假设你想从头排序到最后,则你会将left传个0,也就是他将这个基准和V[0]交换了,这个时候开始循环,因为第一个元素是基准,所以从第二个元素开始循环(也就是left+1),然后到if判断部分,如果v[i]<v[left],也就是说这个时候已经至少有一个元素比基准小了,所以基准至少在v[1]或者之后了,所以他把你找到的这个比基准小的v[i]和v[++last]交换,这时候v[i]的位置已经是在基准的正确位置或者之前了,不会在基准之后的,所以这就实现了把比基准小的元素移到基准的正确位置之前,你说的第一遍执行过程中,第8行last=left=0,那么到了11行时相当于交换v[1]和v[0+1]这没有错,确实是在自己交换自己,但是这样并不违背前面的思路不是么?当if条件不满足的时候,last是不会增加的,但是i会一直加1,所以last和i就会不同,这只是在将比基准小的元素移到基准之前,每有一个比基准小的,last就加1,这样当你循环一遍之后的last值就是基准应该在的位置,而且这个时候,所有比基本小的元素也都在last之前了,这时候last位置的元素也是比基准小的,这没关系,因为之后还有一句swap[v,last,left],到目前位置,基准的位置找到了,基准左边的元素都比基准小,右边都比基准大,再对基准的左右两边递归调用自己,就完成了序列的排序。

  rank函数是排名函数。rank函数最常用的是求某一个数值在某一区域内的排名。

  rank函数语法形式:rank(number,ref,[order])

  函数名后面的参数中 number 为需要求排名的那个数值或者单元格名称(单元格内必须为数字),ref 为排名的参照数值区域,order的为0和1,默认不用输入,得到的就是从大到小的排名,若是想求倒数第几,order的值请使用1。

假设数据在C列有100个,在一空列做公式 =RANK(C1,C$1:C$100)把公式向下拉至100行。最大的数据会显示1,最小的数据显示100,如果第5有两个一样的数据,会显示两个5,没有6,然后会有7、8、9。

公式 =RANK(C1,C$1:C$100,1),公式中加一个1,表示从小到大排序。

公式只显示数值在一列数据中是第几,不会打乱数据的原顺序。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/13496011.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-09-01
下一篇2025-09-01

发表评论

登录后才能评论

评论列表(0条)

    保存