在 excel 表格中自动排序,核心就是实现新增或者修改原始数据之后,表格可以自动重新排列顺序,不需要每次手动点击排序按钮,普通的手动排序属于静态排序,一旦原始数据改动,排序结果不会跟着更新,所以想要真正自动排序,有两类主流方案,一类是使用超级表搭配排序,新增数据后手动刷新排序,另一类是借助函数公式实现动态自动排序,适合需要实时自动更新的场景,另外还有 vba 宏方案,适合高级用户实现完全自动化。很多新手容易混淆,以为点一次排序就是自动排序,其实普通排序是一次性静态操作,原始数据变动之后不会自动重排,这是最关键的认知区别,日常办公里面成绩排名销售排名台账更新,经常需要这种动态自动排序效果,同时还要注意,排序的时候必须保证整行数据联动,不能只单独排某一列,否则同一行对应的姓名金额信息会错位,造成数据错乱。
方案一 超级表排序 新增数据后刷新排序
这个是入门最容易上手的自动排序方案,不需要复杂公式,适合新手。
第一步 选中原始数据区域,包含表头,点击插入选项卡,转换成超级表,勾选表包含标题。
第二步 点击表头的筛选下拉箭头,选择升序或者降序,完成排序。
第三步 后续在超级表末尾新增一行数据,表格会自动扩展范围,但是排序不会立刻自动重排,需要再次点击筛选排序,刷新排序状态。
特点,操作简单,但是仍然需要手动点一次刷新,属于半自动自动排序。
方案二 函数公式动态自动排序
这个方案可以做到原始数据修改之后,排序结果实时自动更新,是真正意义上的自动排序,新版 excel 支持 SORT 函数,写法 = SORT (A2:B10,2,-1),含义是对 A2 到 B10 区域,按照第 2 列,降序自动排序。
第一步 在空白区域第一个单元格输入 SORT 函数,设置排序区域,排序列序号,升降序参数,1 代表升序,负 1 代表降序。
第二步 按下回车,新版 excel 支持动态数组,会自动溢出全部排序结果。
第三步 原始数据区域修改数值或者新增数据之后,排序结果会实时自动更新,不需要手动刷新。
补充,如果是旧版 excel 没有 SORT 函数,可以使用 RANK 排名函数配合 INDEX MATCH 组合公式实现自动排序,公式编写难度更高。
方案三 VBA 宏全自动排序
适合经常更新表格,想要打开文件或者改动数据之后完全自动重排,不需要任何手动操作。
第一步 按下 alt 加 f11 打开 VBA 编辑器。
第二步 选中对应的工作表,写入工作表 Change 事件代码,代码逻辑是当单元格内容发生改动,自动执行排序命令。
第三步 保存文件的时候,文件格式必须选择 xlsm 启用宏的工作簿,普通 xlsx 格式无法保存宏代码。
注意,宏文件打开的时候,需要启用宏,安全设置如果禁用宏,自动排序代码不会运行。
方案四 RANK 排名辅助自动排序
RANK 函数是生成名次,不是直接重排原表,适合排名场景,写法 = RANK (C2,$C$2:$C$10,0),0 代表降序排名,得到名次之后,再根据名次列辅助排序。
第一步 在旁边新增名次列,输入 RANK 函数,下拉填充。
第二步 之后根据这个名次列,再做排序,原始数据变化名次会自动更新,但是排序行位置仍然需要手动刷新。
四种自动排序方案对比表格
| 方案名称 | 是否实时自动更新 | 上手难度 | 适用版本 |
|---|---|---|---|
| 超级表筛选排序 | 半自动,需要刷新 | 简单 | 全部 excel 版本 |
| SORT 动态数组函数 | 实时自动更新 | 中等 | 新版 365 及 2021 以上 |
| VBA 宏自动排序 | 完全自动 | 高 | 全版本,需要宏权限 |
| RANK 加辅助排序 | 名次自动更新,行序手动刷新 | 中等 | 全部 excel 版本 |
深度使用注意要点
第一 使用 SORT 动态排序的时候,排序输出区域下方不能有其他内容,否则会出现溢出错误,动态数组会占用连续单元格。
第二 排序一定要保持整行联动,单独对单列排序,会让同行匹配信息错位,这是排序最常见事故。
第三 合并单元格的数据,自动排序很容易报错,想要稳定自动排序,数据区域尽量取消合并单元格。
第四 VBA 宏存在安全提示,部分公司电脑安全策略会阻止宏运行,这种环境下不推荐宏方案,优先选择 SORT 函数方案。
第五 如果存在相同数值,自动排序的时候名次会并列,SORT 函数遇到相同数值顺序默认保持原有相对顺序,如果需要自定义并列排序规则,还要增加辅助列。
第六 旧版 excel 没有动态数组 SORT 函数,不能强行使用,会提示函数不存在,需要改用 INDEX MATCH 加 RANK 组合公式。
新手优先从超级表半自动排序开始熟悉,如果是 excel365 版本,直接使用 SORT 函数实现实时自动排序,对自动化要求很高并且电脑允许宏,再考虑 VBA 方案,排名类需求可以搭配 RANK 函数,根据自己的 excel 版本和业务需求选择对应的自动排序方式。
【常见问题】
问题 1 excel 表格中怎样自动排序,为什么我点了排序改完数据不会自动重新排
回答 1 excel 表格中怎样自动排序,普通手动排序属于静态排序,原始数据改动之后不会自动重排,想要实时自动排序,新版 excel 可以使用 SORT 动态数组函数,或者使用 VBA 宏实现自动更新。
问题 2 excel 表格中怎样自动排序,SORT 函数提示溢出错误是什么原因
回答 2 excel 表格中怎样自动排序,SORT 是动态数组函数,输出排序结果会向下向右溢出单元格,如果溢出区域里面已经有其他数据,就会出现溢出错误,清空输出区域下方和右侧单元格即可解决。
问题 3 excel 表格中怎样自动排序,旧版 excel 没有 SORT 函数怎么办
回答 3 excel 表格中怎样自动排序,旧版 excel 不支持 SORT 动态数组函数,可以使用 RANK 生成名次,再搭配 INDEX MATCH 组合公式实现自动排序,或者使用超级表,每次新增数据之后手动刷新排序。
问题 4 excel 表格中怎样自动排序,排序之后同一行数据错位是什么原因
回答 4 excel 表格中怎样自动排序,数据错位是因为只单独排序了单列,没有把整行数据一起选中排序,排序的时候必须选中完整数据区域,保证每一行所有列的数据联动排序。
【免责申明】
本文内容基于 excel 常规版本功能进行操作讲解,不同版本 excel 界面菜单名称和函数支持情况可能存在细微差异,操作前建议保存原始文件备份,本文仅供学习参考,不承担因排序操作失误造成的数据错位或者文件异常损失。


