sortby函数支持单列、多列、横向、自定义序列及字符串分段五种动态排序方式,均要求依据列/行与数据区域行列数严格匹配。

如果您希望使用 SORTBY 函数依据某一列(如“部门”“日期”或“金额”)的值,对另一组关联数据区域进行动态排序,则需确保排序依据列与目标数据区域具有相同的行数或列数。以下是实现该目标的多种方法:
一、单列依据升序/降序排序
此方法适用于以单一列数值为基准,对整块数据区域进行整体重排。排序依据列必须与数据源行列维度一致,且仅含单行或单列。
1、选中目标输出区域左上角单元格(例如 F2);
2、输入公式:=SORTBY(A2:C15,B2:B15,1);
3、按 Enter 确认,结果将自动溢出至 F2:H16 区域;
4、其中 A2:C15 为待排序数据源,B2:B15 是与之行数相同的单列依据,1 表示按 B 列升序排列。
二、多列依据嵌套排序
当主依据列存在重复值时,可追加次依据列实现层级排序。函数按参数顺序依次应用各组条件,前序条件相同时启用后续条件。
1、在空白单元格(如 G2)输入公式:=SORTBY(A2:D20,A2:A20,-1,C2:C20,1);
2、A2:D20 为完整数据区域;
3、A2:A20 是第一排序依据(降序),C2:C20 是第二排序依据(升序);
4、公式执行后,先按 A 列从大到小排列,A 值相等时再按 C 列从小到大排列。
三、横向依据排序(按行方向)
当排序依据位于某一行(而非一列)时,SORTBY 可自动识别并沿水平方向执行排序,适用于完成率、季度指标等横向对比场景。
1、在空白单元格(如 B6)输入公式:=SORTBY(B1:E4,B4:E4,-1);
2、B1:E4 是四行四列的数据区域;
3、B4:E4 是第四行的四个数值,作为排序依据;
4、函数将整块 B1:E4 按 B4:E4 的值从高到低重新排列各列顺序。
四、自定义序列映射排序
当需要按非自然顺序(如“华北、华东、华南、西南”)排序时,可借助 MATCH 函数将文本值转换为顺序编号,再交由 SORTBY 处理。
1、准备自定义序列列表(例如 F2:F5 输入“华北、华东、华南、西南”);
2、在空白单元格(如 H2)输入公式:=SORTBY(A2:C12,MATCH(B2:B12,F2:F5,0),1);
3、MATCH(B2:B12,F2:F5,0) 返回每个部门在 F2:F5 中的位置序号(如“华东”→2);
4、SORTBY 据此序号升序排列 A2:C12 区域,实现完全可控的顺序输出。
五、按字符串部分内容排序
无需辅助列即可提取字段片段作为依据,例如按身份证号后四位、产品编码末段或日期中的年份排序。
1、在空白单元格(如 I2)输入公式:=SORTBY(A2:B21,RIGHT(A2:A21,4),1);
2、RIGHT(A2:A21,4) 提取 A 列每行右侧 4 个字符构成新数组;
3、该数组作为排序依据,与 A2:B21 行数一致(均为 20 行);
4、最终按提取出的四位字符串升序重排 A2:B21 数据。











