排序技巧3:按多关键字排序

依次按语文、数学、英语成绩降序排列姓名和总分

下图左表展示的是各位同学的语文、数学、英语成绩以及总成绩。现在的要求是:以语文为第一关键字,数学为第二关键字,英语为第三关键字,降序排列,得到新的姓名和总分的排列,结果如右表所示。

简单来说就是,先比较各位同学的语文成绩,语文成绩高的排在前面;如果语文成绩相同,再比较数学成绩,数学成绩高的排前面;如果语文数学成绩都相同,那么比较英语成绩,英语成绩高的排前面。

下面举两个例子:首先看第3行和第4行两人的成绩,第3行叶静芝的语文成绩大于第4行张君妍的语文成绩,所以叶静芝排在张君妍的前面。

再来看第14行和第15行两人的成绩,彭春婷和张杰良的语文成绩相同,都是77分,所以要比较数学成绩,彭春婷的数学成绩大于张杰良的,所以彭春婷排在张杰良的前面。

如果用基础操作来做,就是点三下降序排序。排序的顺序是先英语、再数学、最后语文。

说了这么多,大家应该明白题意了。那么用函数该如何完成呢?其实还是用到加权的方法,现在是语文的权重最高,数学次之,英语最低。
选中G3:G15,在编辑栏输入下面的公式,按ctrl+shift+enter。

=INDEX(A:A,MOD(LARGE(MMULT(B3:D15,10^{8;5;2})+ROW(3:15),ROW()-2),100))

现在加权的列数比较多,有3列,可以用mmult来处理,也就是MMULT(B3:D15,10^{8;5;2})这部分,相当于B3:B15*10^8+C3:C15*10^5+D3:D15*10^2,结果如下图G列所示。

这里为什么要选10的8,5,2次方呢?因为每科成绩的最高分是100分,有3位数,要留出3个位置。那么三科成绩要留出9个位置,它们的分界点分别是10的6,3,0次方。

但是这三科成绩加权后还要加对应的行号,在加行号前还要扩大100倍,相当于再乘以10的2次方,所以最后是10的8,5,2次方。
MMULT(B3:D15,10^{8;5;2})+ROW(3:15)这部分用mmult的结果加上对应的行号,结果如下图G列所示。

LARGE(MMULT(B3:D15,10^{8;5;2})+ROW(3:15),ROW()-2)这部分用large函数对上一步的结果降序排序,这样就符合了按三个关键字降序排序的要求。其中尾巴上的两位数是所在的行号,下一步就要提取出这些行号。

MOD(LARGE(MMULT(B3:D15,10^{8;5;2})+ROW(3:15),ROW()-2),100)这部分用mod函数除以100,取余数得到了对应的行号。当然也可以用right函数从右边截取2位得到行号。
=INDEX(A:A,MOD(LARGE(MMULT(B3:D15,10^{8;5;2})+ROW(3:15),ROW()-2),100))这部分用index函数返回A列相应行的姓名。

得到了排好序的姓名,就可以根据姓名查找总分了。在H3单元格输入下面的公式,向下填充,完成。

=VLOOKUP(G3,A$3:E$15,5,0)

链接:

https://pan.baidu.com/s/1BHks7mWsSkxt2h9uladHyQ

提取码:fco9
(0)

相关推荐

  • 手把手教你,学会单条件和多条件的筛选

    筛选符合单个指定条件的记录 示例26-1    提取销售1组的记录 如图26-1所示,A~D列是某企业销售记录表的部分内容,需要根据G1单元格中指定的组别,提取出该组别的全部记录. 在F4单元格中输入 ...

  • Excel如何实现模糊近似匹配!

    最近,不止一个老铁后台问我,如何实现简称匹配全称的问题,其实也就是普遍的模糊匹配问题!今天就系统讲一下! 常见问题01 | 全称找简称 =LOOKUP(1,0/FIND($D$2:$D$6,A2),$ ...

  • 聊下SQL在Excel中的排序技巧及扩展应用

    HI,大家好,我是星光. 排序是我们使用Excel处理数据经常面对的问题,Excel甚至专门对此内置了[排序]功能.今天我们就来聊一下SQL如何对查询结果进行排序操作,也就是ORDER BY 语句,其 ...

  • Excel中6个经典排序技巧,动画演示,简单易学

    [温馨提示]亲爱的朋友,阅读之前请您点击[关注],您的支持将是我最大的动力! Excel中排序也是工作常见的操作之一,如何高效地完成排序操作,关系到我们的工作效率.今天阿钟老师分享几个排序技巧,动画演 ...

  • 人见人爱的Excel排序技巧,90%以上的人都不会,简单易学超实用

    人见人爱的Excel排序技巧,90%以上的人都不会,简单易学超实用

  • 排序技巧4:按先后顺序把同类项排在一起

    按姓名出现的先后顺序将相同姓名的排列在一起 下图左表记录的是各位考生的多次考试成绩,现需要根据左表姓名的先后顺序将相同姓名的排列在一起,结果如右表所示. 比如左表第1个姓名是"徐娥芝&quo ...

  • 排序技巧2:对文本进行升序排序

    你好,我是刘卓.欢迎来到我的公号,excel函数解析.对于数字,我们可以用small或large等函数进行排序:而对于文本,很多小伙伴可能不清楚哪个函数可以对其排序,那么今天来分享下对文本排序的方法和 ...

  • 排序技巧1:按分数从高到低的顺序排列姓名

    按成绩从高到低的顺序排列姓名 下图左表记录的是10名考生的成绩,为了更好的展示名次,现需要按成绩从高到低的顺序排列姓名,结果如右表所示. 如果有多人的成绩是相同的,那么按顺序依次排列.比如序号1的&q ...

  • (烧脑!)按多关键字排序后求各名次对应的姓名

    问:怎么查找第一名对应的姓名?名次的确定是先看语文的分数,语文分数高的排名靠前,如果语文分数相等,则要看总分,总分大的排名靠前.结果如G列所示,由于他只问第一名的姓名,F列和G列是我自己模拟的结果. ...

  • PowerBI技巧:图表数据的排序

    把字段拖进PowerBI可视化对象以后,出来的默认可视化序列很可能不是我们想要的,那么就需要重新进行排序.本文介绍排序的几种方式. 以下面这个折线柱形图为例, 这是前五大智能手机厂商2017年和201 ...

  • Excel教程:天天都用Excel排序,却被新同事的排序技巧“碾压”了?

    编按:都说这Excel里暗藏玄机,求最大值的MAX函数可以用于查找,用于查找的LOOKUP函数可以对数据进行四舍五入-就连看似人人都会的Excel自动排序,也藏着许多我们不知道的"小秘密&q ...