Excel中SORTBY函数使用详解
SORTBY函数是Excel中用于基于一个或多个列的值对范围或数组进行排序的函数。与传统的SORT函数不同,SORTBY允许你指定一个或多个排序依据的列,并可以根据这些列的值进行多级排序。
SORTBY函数的基本语法:
SORTBY(array, sort_by_array1, [sort_order1], [sort_by_array2], [sort_order2], ...)
array:必需参数,代表要排序的数据范围或数组。sort_by_array1:必需参数,代表第一个排序依据的列或数组。sort_order1:可选参数,代表第一个排序依据的顺序(1代表升序,-1代表降序)。sort_by_array2、sort_order2:可选参数,代表第二个及以后的排序依据的列或数组及其顺序。
SORTBY函数的使用注意事项:
sort_by_array参数可以是直接输入的列或数组,也可以是引用到工作表中的某个范围。可以根据需要指定多个排序依据,并通过
sort_order参数控制每个依据的排序顺序。如果某个
sort_order参数缺失或为0,则默认为升序。SORTBY函数不会改变原始数据的顺序,而是返回一个新的排序后的数组。
SORTBY函数的案例:
案例1:单列升序排序
假设有一个员工数据表,包含员工姓名和薪资,分别在A和B列。你想根据薪资升序对员工数据进行排序。你可以使用以下公式:
=SORTBY(A1:B10, B1:B10, 1)
结果将是按照薪资升序排列的员工数据表。
案例2:单列降序排序
继续使用上述员工数据表,这次你想根据薪资降序对员工数据进行排序。你可以使用以下公式:
=SORTBY(A1:B10, B1:B10, -1)
结果将是按照薪资降序排列的员工数据表。
案例3:多列排序
假设有一个销售数据表,包含销售员姓名、销售额和销售日期,分别在A、B和C列。你想首先根据销售额降序排序,如果销售额相同,则根据销售日期升序排序。你可以使用以下公式:
=SORTBY(A1:C10, B1:B10, -1, C1:C10, 1)
结果将是首先根据销售额降序,其次根据销售日期升序排列的销售数据表。

案例4:结合INDEX和SORTBY提取排序后的数据
假设有一个产品库存表,包含产品名称、库存数量和价格,分别在A、B和C列。你想提取库存数量大于100的产品,并按照价格升序排序。你可以使用INDEX和SORTBY函数结合起来实现这个需求。例如:
=INDEX(SORTBY(A1:C10, B1:B10, ">100"), MATCH(TRUE, INDEX(SORTBY(A1:C10, B1:B10, ">100"), 0, 3) > 100, 0), 0)
结果将是库存数量大于100的产品数据表,按照价格升序排列。这里使用了INDEX函数来提取特定列的数据,并使用MATCH函数来找到满足条件的行号。
案例5:动态数据排序
假设你有一个动态生成的数据数组,你想根据其中一列的值对其进行排序。你可以使用SORTBY函数结合其他Excel函数(如SEQUENCE、INDIRECT等)来动态构建数据数组,并进行排序。例如:
=SORTBY(SEQUENCE(5), SEQUENCE(5), 1)
结果将是一个从1到5的连续整数数组,按照升序排列。你可以根据需要调整SEQUENCE函数的参数来生成不同的动态数据数组,并使用SORTBY函数进行排序。
案例6:结合FILTER和SORTBY筛选排序
假设有一个学生成绩表,包含学生姓名、数学成绩和英语成绩,分别在A、B和C列。你想筛选出数学成绩大于80分且英语成绩也大于80分的学生,并按照英语成绩升序排序。你可以使用FILTER和SORTBY函数结合起来实现这个需求。例如:
=SORTBY(FILTER(A1:C10, (B1:B10 > 80) * (C1:C10 > 80)), C1:C10, 1)
结果将是数学成绩和英语成绩均大于80分的学生数据表,按照英语成绩升序排列。这样你就可以快速地筛选出符合特定条件的数据,并进行进一步的分析或处理。
