Microsoft Lab
全部软件
Excel范围对象(Range Object)约 5 分钟

Sort a Range 排序范围

重点内容


适用版本

桌面版通用(Excel 365 / 2021 / 2019 等)。


单列排序

Range("A1:A8").Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlNo

Key1 是排序依据的列,Order1 是升序/降序,Header 表示这个范围有没有标题行。


两列范围、按其中一列排序

Range("A1:B8").Sort Key1:=Range("B2"), Order1:=xlDescending, Header:=xlYes

多重排序条件(先按 B 列、再按 C 列)

Range("A1:C8").Sort Key1:=Range("B2"), Order1:=xlAscending, Key2:=Range("C2"), Order2:=xlDescending, Header:=xlYes

搭配 CurrentRegion 做动态排序

Range("A1").CurrentRegion.Sort Key1:=Range("B2"), Order1:=xlDescending, Header:=xlYes

数据笔数增加也能自动涵盖,不用手动改范围地址。

📷 画面提示

运行排序前后的数据对比,B 列数值从原本顺序变成排好序的顺序


排序整张工作表(含空白行)

Cells.Sort Key1:=Columns("B"), Order1:=xlDescending, Header:=xlYes

方法怎么选

场景写法备注
单一固定范围,按一列排序Range("A1:A8").Sort Key1:=...范围地址写死,数据笔数变多要手动改
按多列(先 B 后 C)排序加 Key2:=...、Order2:=...排序优先级看 Key1、Key2 的顺序
数据笔数会变动Range("A1").CurrentRegion.Sort ...用 CurrentRegion 自动涵盖新增数据
排序整张工作表(含空白行)Cells.Sort Key1:=Columns("B"), ...排序对象是 Cells 不是单一 Range

学完你会

常见错误

  • Header 参数设错(有标题行却设 xlNo,或反过来),标题行被当成数据一起排序
  • 多重排序时 Key1/Key2 的优先级顺序搞反,排序结果不是预期的样子
  • 范围写死成固定地址,数据笔数变多之后排序漏掉了新增的部分——应该改用 CurrentRegion

Sources

Blog / Website:

  1. Sort a Range
只记在你的浏览器里,换设备不会同步。