Office 365函数新世界:快速排序
打个响指,提一个问题。
以下图所示的数据为例,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
提取码: p4su
图文制作:看见星光
原载公众号:Excel星球