EP05. “SORT Function SORT 函数”
🔒 登录后可标记已读- SORT 函数不用打开排序对话框,一条公式就能排序,结果自动溢出(spilling)到旁边单元格
- 更关键的是它完全不碰原始数据——原数据长什么样还是什么样,排序结果只出现在公式所在的位置
- 基础用法、按不同列排序、降序、多列排序,以及跟 SORTBY 的搭配,这几种场景都整理在这篇
- 学完能用一条公式做到动态、随原数据自动更新的排序
重点内容
适用版本
需要 Excel 365 或 Excel 2021(旧版本没有 SORT 函数,只能用 Data → Sort 传统排序)。
基础用法
示例数据 A2:D15 是一份含姓名、部门、销售额等字段的记录表。
- 在 F2 输入
=SORT(A2:D15) - 结果自动向下、向右溢出填满多个单元格(spilling),不需要按 Ctrl + Shift + Enter
[截图:SORT 函数结果自动溢出,排序后的完整数据表]
📌 SORT 默认按第一列(第一个字段)、升序排序。
按不同列排序
在第二个参数指定要排序的列号:
=SORT(A2:D15,2)表示改按第二列排序
降序排列
在第三个参数指定顺序:
=SORT(A2:D15,2,-1),1 表示升序,-1 表示降序
多列排序
第二个参数用数组常量 {} 同时指定多个列:
=SORT(A2:D15,{1,4})表示先按第 1 列排,再按第 4 列排(例如先按姓氏,再按销售额)- 混合排序顺序(比如第一列升序、第二列降序)也可以写成数组常量搭配对应的顺序参数:
=SORT(A2:D15,{1,4},{1,-1})
[截图:多列排序结果,先按姓氏排、同姓氏内再按销售额排]
搭配 SORTBY 函数
如果想「按某一列排序,但显示另一个范围」,或排序依据不是数据本身相邻的列,可以改用 SORTBY 函数(详见反转列表 / 随机打乱列表两篇笔记的用法)。
SORT 还是 SORTBY,怎么选
| 函数 | 适合场景 | 备注 |
|---|---|---|
| SORT | 排序依据就是数据本身的某一列 | 用列号指定排序依据,写法更简单 |
| SORTBY | 排序依据是另一个范围(不相邻、或不显示出来) | 例如按销售额排序但只显示姓名 |
函数速查
| 函数 | 语法 | 用途 | 例子 |
|---|---|---|---|
| SORT | =SORT(array, [sort_index], [sort_order]) | 对范围排序,结果自动溢出 | =SORT(A2:D15,2,-1) |
| SORTBY | =SORTBY(array, by_array, [order]) | 按对应范围的值排序 | =SORTBY(A2:D15,C2:C15,-1) |
学完你会
- ✅ 用 SORT 函数一条公式排序,结果随原数据自动更新
- ✅ 用第二、第三参数控制按哪一列排、升序还是降序
- ✅ 判断什么时候该用 SORT、什么时候该改用 SORTBY
常见错误
- 忘记 SORT 是动态数组函数,在结果溢出范围内手动插入内容,会导致 #SPILL! 错误
- 多列排序时数组常量里的列号和顺序参数数量对不上(比如列号写了两个、顺序只写了一个),公式会报错
- 以为 SORT 会改动原始数据 A2:D15,实际上原数据完全没变,SORT 只是在公式所在的位置生成一份排序后的副本
Sources
Blog / Website: