分享

Office 365函数新世界:快速排序

 hercules028 2020-11-28

打个响指,提一个问题。

以下图所示的数据为例,A:D是数据源,是一份成绩表,现在需要按语文成绩降序排列,结果如F:G列所示。

你会怎么写函数公式呢?

常规的解法套路是这样的▼

F2单元格输入数组公式▼

=INDEX(A:A,MOD(LARGE($B$2:$B$12/1%+ROW($2:$12),ROW(A1)),100))

将语文成绩放大百倍,加上行号,然后从大到小取值,再取行号,再用INDEX函数取结果。

湾湾又绕绕,对函数新人很不友好…

而如果你的Excel版本是365,完全可以直接使用SORT函数,F2单元格输入以下公式即可获取全部结果。

F2单元格输入公式▼

=SORT(A2:B12,2,-1)

就芥末简单!

那么什么是SORT函数?

SORT语法

SORT函数是一个根据单行或单列的数据为依据进行排序的函数,它的基本语法如下▼

基本语法▼

=SORT(数据源,[排序索引],[升序还是降序],[是否按列排序])

除了第1参数以外,其它参数都是可以省略的。

其中第2参数指定排序索引,如果省略则默认为1

第3参数指定排序规则,1是升序,-1是降序,默认为升序

第4参数指定排序方式,TRUE是按列排序,FALSE是按行排序,默认为FALSE。

依然以上图所示成绩表为例,如果需要对人名进行升序排序,公式如下

=SORT(A2:A12)

而如果需要按语文成绩对成绩表降序排序,公式如下▼

=SORT(A2:B12,2,-1)

A2:B12是数据源。第2参数指定了排序依据列的索引号,'语文'在数据源中是第2列,也就是2。第3参数为-1,指定排序规则为降序。

SORTBY函数

打个响指,再提一个新的问题。

依然以上图所示成绩表为例,如果需要按总分进行排序,语文+数学+英语=总分,总分越高,越排在前面,又该怎么写函数公式呢?

推荐使用SORTBY函数,F2单元格输入以下公式即可:

=SORTBY(A2:D12,B2:B12+C2:C12+D2:D12,-1)

SORTBY是SORT的姊妹版,支持多列或自定义规则排序。语法格式如下:

语法格式▼

=SORTBY(数据源,排序源1,排序规则1,排序源2,排序规则2……)

以上述按总分排序的公式为例,数据源是A2:D12,排序源1是三科成绩相加的总分列,排序规则是-1,也就是降序排列。

……

如果需要多列排序,比如首先按语文成绩降序排列;如果语文成绩相等,则再按数学成绩降序排序;如果数学成绩相等,则再按英语成绩降序排序……

实现公式如下▼

F2单元格输入公式▼

=SORTBY(A2:D12,B2:B12,-1,C2:C12,-1,D2:D12,-1)

按照优先级,依次指定各科数据,并设置排序规则为降序。计算结果如下图所示。

……

再举一个自定义排序的例子。

如下图所示,需要将A列班级,按一班、二班、三班……六班的序列排序。

F2单元格输入公式▼

=SORTBY(A2:E12,FIND(A2:A12,'一班二班三班四班五班六班'))

A2:E12是数据源,FIND函数查询A列班级在字符串'一班二班三班四班五班六班'中的位置,返回一个序列号,SORTBY第3参数省略,默认对第2参数排序源作升序排序。

没了,挥挥手,下期再见。

案例文件下载百度网盘..

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

图文制作:看见星光

原载公众号:Excel星球

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多