WPS SORTBY()函数用法详解(附带实例)
SORTBY() 函数可以根据一组或多组排序依据对一个单元格区域或数组进行排序,返回排序后的数据数组。
SORTBY() 函数语法格式如下:
SORTBY() 函数最多支持 126 组排序依据。
【实例 1】单条件排序,根据“金额”降序排序。在 F5 单元格输入公式:

图 1 单条件排序,根据“金额”降序排序
SORTBY() 函数的第 1 个参数引用 B5:D10 单元格区域,对此单元格区域进行排序,第 2 个参数引用 D5:D10 单元格区域作为排序依据,排序依据数组需要是单行或单列,并且行数或列数需要与第 1 个参数相同,第 3 个参数设置为 –1(降序排序),第 2 个参数和第 3 个参数是一组排序条件,从第 2 个参数开始,每两个参数是一组排序条件。
【实例 2】单条件排序,对日期、姓名根据“金额”降序排序。在 G15 单元格输入公式:

图 2 对日期、姓名根据“金额”降序排序
SORTBY() 函数的第 1 个参数引用“姓名”、“日期”所在的 B15:C20 单元格区域,第 2 个参数排序依据数组 1,引用“金额”所在的 E15:E20 单元格区域,排序依据数组参数引用的单元格区域或数组,需要和第 1 个参数引用的单元格区域或数组的行数或列数相同,第 3 个参数设置为 –1 进行降序排序。
【实例 3】多条件排序,根据日期进行升序,同时对“金额”降序排序。在 F25 单元格输入公式:

图 3 根据日期进行升序,同时对“金额”降序排序
SORTBY() 函数的第 1 个参数引用 B25:D30 单元格区域,第 2 个参数排序依据数组 1,引用 B25:B30 单元格区域,第 3 个参数排序方式 1,设置为 1(升序排序),第 4 个参数排序依据数组 2,引用 D25:D30 单元格区域,第 5 个参数排序方式 2,设置为 –1(降序排序),其中第 2、3 个参数为第 1 组排序条件,第 4、5 个参数为第 2 组排序条件,函数会根据多组排序条件的顺序进行排序。
【实例 4】自定义序列排序,根据姓名自定义序列排序。在 H35 单元格输入公式:

图 4 根据姓名自定义序列排序
使用 SORTBY() 函数可以实现自定义序列排序:
SORTBY() 函数可根据 MATCH() 函数返回的位置对数据进行排序,当 C35:C40 单元格区域中的姓名不在 F35:F37 单元格区域中时,MATCH() 函数会返回错误值 #N/A,因为错误值大于任意数值,所以升序排序后,姓名不在自定义序列的对应行会被排到最后。
【实例 5】对数据进行倒序排序。在 F45 单元格输入公式:

图 5 对数据进行倒序排序
SORTBY() 函数的第 1 个参数引用 B45:D50 单元格区域,第 2 个参数使用 ROWS() 函数计算 B45:D50 单元格区域的行数,根据 ROWS() 函数返回的行数,使用 SEQUENCE() 函数生成和第 1 个参数单元格区域行数相同的序列,第 3 个参数设置为 –1 表示降序排序。SORTBY() 函数排序后即可实现对数据进行倒序排序效果。
【实例 6】对数据进行随机排序。在 F55 单元格输入任意一个公式:

图 6 对数据进行随机排序
SORTBY() 函数的第 1 个参数引用 B55:D60 单元格区域,第 2 个参数使用 ROWS() 函数计算 B55:D60 单元格区域的行数,根据 ROWS() 函数返回的行数,使用 RANDARRAY() 函数生成和参数 1 单元格区域行数相同的随机数数组,第 3 个参数设置为 1(升序排序)或 –1(降序排序)。SORTBY 函数排序后即可实现对数据进行随机排序,将数据按行随机排序后提取前N行,可以实现随机抽样、抽奖等功能。

图 7 排序依据数组与第1个参数行数或列数不同
第 1 个参数引用 B5:D10 单元格区域,此单元格区域为 6 行 3 列,第 2 个参数引用 B5:B11 单元格区域,此单元格区域为 7 行 1 列,与第 1 个参数 6 行的行数不同,所以函数返回错误值 #VALUE!。
2) 当排序依据数组多行或多列时,函数会返回错误值 #VALUE!。在 F15 单元格输入公式:

图 8 排序依据数组多行或多列
SORTBY() 函数排序依据数组只支持单行或单列的数组或单元格区域,因为排序依据数组引用了 B15:C20 单元格区域,此单元格区域为 6 行 2 列的多行多列数组,所以函数会返回错误值 #VALUE!。
3) 当排序方式参数不等于 1 并且不等于 –1 时,函数会返回错误值 #VALUE!。在 F25 单元格输入公式:

图 9 排序方式参数不等于1并且不等于–1
SORTBY() 函数排序方式参数只接受 1 或 –1,如果设置其他值,函数会返回错误值 #VALUE!。
SORTBY() 函数语法格式如下:
SORTBY(数组, 排序依据数组1, [排序方式1], …)参数说明如下:
- 数组(必填项):数组或单元格区域;
- 排序依据数组1(必填项):与数组行数或列数相同的单行或单列;
- 排序方式1:1 表示升序; -1 表示降序。省略时默认值为 1;
- ...:可继续添加其他排序依据数组及排序方式。
SORTBY() 函数最多支持 126 组排序依据。
【实例 1】单条件排序,根据“金额”降序排序。在 F5 单元格输入公式:
=SORTBY(B5:D10,D5:D10,-1)效果如下图所示:

图 1 单条件排序,根据“金额”降序排序
SORTBY() 函数的第 1 个参数引用 B5:D10 单元格区域,对此单元格区域进行排序,第 2 个参数引用 D5:D10 单元格区域作为排序依据,排序依据数组需要是单行或单列,并且行数或列数需要与第 1 个参数相同,第 3 个参数设置为 –1(降序排序),第 2 个参数和第 3 个参数是一组排序条件,从第 2 个参数开始,每两个参数是一组排序条件。
【实例 2】单条件排序,对日期、姓名根据“金额”降序排序。在 G15 单元格输入公式:
=SORTBY(B15:C20,E15:E20,-1)如下图所示:

图 2 对日期、姓名根据“金额”降序排序
SORTBY() 函数的第 1 个参数引用“姓名”、“日期”所在的 B15:C20 单元格区域,第 2 个参数排序依据数组 1,引用“金额”所在的 E15:E20 单元格区域,排序依据数组参数引用的单元格区域或数组,需要和第 1 个参数引用的单元格区域或数组的行数或列数相同,第 3 个参数设置为 –1 进行降序排序。
【实例 3】多条件排序,根据日期进行升序,同时对“金额”降序排序。在 F25 单元格输入公式:
=SORTBY(B25:D30,B25:B30,1,D25:D30,-1)如下图所示:

图 3 根据日期进行升序,同时对“金额”降序排序
SORTBY() 函数的第 1 个参数引用 B25:D30 单元格区域,第 2 个参数排序依据数组 1,引用 B25:B30 单元格区域,第 3 个参数排序方式 1,设置为 1(升序排序),第 4 个参数排序依据数组 2,引用 D25:D30 单元格区域,第 5 个参数排序方式 2,设置为 –1(降序排序),其中第 2、3 个参数为第 1 组排序条件,第 4、5 个参数为第 2 组排序条件,函数会根据多组排序条件的顺序进行排序。
【实例 4】自定义序列排序,根据姓名自定义序列排序。在 H35 单元格输入公式:
=SORTBY(B35:D40,MATCH(C35:C40,F35:F37,0),1)效果如下图所示:

图 4 根据姓名自定义序列排序
使用 SORTBY() 函数可以实现自定义序列排序:
- 第 1 个参数引用 B35:D40 单元格区域;
- 第 2 个参数使用 MATCH() 函数查询 C35:C40 单元格区域中的每一个姓名在 F35:F37 单元格自定义序列中所在的位置,MATCH() 函数返回 1 到 N 的整数;
- 第 3 个参数设置 1(升序排序)。
SORTBY() 函数可根据 MATCH() 函数返回的位置对数据进行排序,当 C35:C40 单元格区域中的姓名不在 F35:F37 单元格区域中时,MATCH() 函数会返回错误值 #N/A,因为错误值大于任意数值,所以升序排序后,姓名不在自定义序列的对应行会被排到最后。
【实例 5】对数据进行倒序排序。在 F45 单元格输入公式:
=SORTBY(B45:D50,SEQUENCE(ROWS(B45:D50)),-1)效果如下图所示:

图 5 对数据进行倒序排序
SORTBY() 函数的第 1 个参数引用 B45:D50 单元格区域,第 2 个参数使用 ROWS() 函数计算 B45:D50 单元格区域的行数,根据 ROWS() 函数返回的行数,使用 SEQUENCE() 函数生成和第 1 个参数单元格区域行数相同的序列,第 3 个参数设置为 –1 表示降序排序。SORTBY() 函数排序后即可实现对数据进行倒序排序效果。
【实例 6】对数据进行随机排序。在 F55 单元格输入任意一个公式:
=SORTBY(B55:D60,RANDARRAY(ROWS(B55:D60)),1) =SORTBY(B55:D60,RANDARRAY(ROWS(B55:D60)),-1)效果如下图所示:

图 6 对数据进行随机排序
SORTBY() 函数的第 1 个参数引用 B55:D60 单元格区域,第 2 个参数使用 ROWS() 函数计算 B55:D60 单元格区域的行数,根据 ROWS() 函数返回的行数,使用 RANDARRAY() 函数生成和参数 1 单元格区域行数相同的随机数数组,第 3 个参数设置为 1(升序排序)或 –1(降序排序)。SORTBY 函数排序后即可实现对数据进行随机排序,将数据按行随机排序后提取前N行,可以实现随机抽样、抽奖等功能。
SORTBY()注意事项
1) 当排序依据数组与第 1 个参数行数或列数不同时,函数会返回错误值 #VALUE!。在 F5 单元格输入公式:=SORTBY(B5:D10,B5:B11,-1)效果如下图所示:

图 7 排序依据数组与第1个参数行数或列数不同
第 1 个参数引用 B5:D10 单元格区域,此单元格区域为 6 行 3 列,第 2 个参数引用 B5:B11 单元格区域,此单元格区域为 7 行 1 列,与第 1 个参数 6 行的行数不同,所以函数返回错误值 #VALUE!。
2) 当排序依据数组多行或多列时,函数会返回错误值 #VALUE!。在 F15 单元格输入公式:
=SORTBY(B15:D20,B15:C20,1)效果如下图所示:

图 8 排序依据数组多行或多列
SORTBY() 函数排序依据数组只支持单行或单列的数组或单元格区域,因为排序依据数组引用了 B15:C20 单元格区域,此单元格区域为 6 行 2 列的多行多列数组,所以函数会返回错误值 #VALUE!。
3) 当排序方式参数不等于 1 并且不等于 –1 时,函数会返回错误值 #VALUE!。在 F25 单元格输入公式:
=SORTBY(B25:D30,B25:B30,0)效果如下图所示:

图 9 排序方式参数不等于1并且不等于–1
SORTBY() 函数排序方式参数只接受 1 或 –1,如果设置其他值,函数会返回错误值 #VALUE!。