5.4.3-单元格区域排序¶
对某一个区域按照某列进行排序,是一个比较常见的需求。示例:已知成绩,按照语文成绩进行排序
遇到排序问题,我一般的做法是先录制宏看看,因为代码行数太多,记不住,哈哈。然后在此基础上修改即可,接下来介绍一下具体操作:
1)第1步:点击Excel界面左下角录制宏按钮
2)第2步:在弹出的窗口确认开始录制宏,其中的宏名就是后续在VBE界面中看到的Sub名称,本文中为宏1
3)第3步:接下来对Excel的所有操作都有在后台生成一段对应的VBA代码。先选中拟排序区域,开始菜单下-排序和筛选-自定义排序。在弹出的窗口中,设置主要关键字为语文,次序为降序。
4)第4步:关闭录制宏
排序后的结果如图5-16所示,可以发现是按照语文成绩从高到低进行排序
对应的代码如下:
1 Sub 宏1()
2 '
3 ' 宏1 宏
4 '
5
6 '
7 Range("A1:C6").Select
8 ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
9 ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("B2:B6"), _
10 SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
11 With ActiveWorkbook.Worksheets("Sheet1").Sort
12 .SetRange Range("A1:C6")
13 .Header = xlYes
14 .MatchCase = False
15 .Orientation = xlTopToBottom
16 .SortMethod = xlPinYin
17 .Apply
18 End With
19 End Sub
关键代码解读:
1)第7行: Range("A1:C6").Select。选中A1:C6区域
2)第8行: ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear。清空Sheet1工作表的排序区域
3)第9-10行:_(空格下划线)表示下一行为本行的续行,当代码长度过长时可以使用这种方法进行分行。本段代码含义为:新增排序区域的Key为B2:B6区域,且按照降序排列
4)第11-18行:该段代码实现以下关键功能
4.1)第12行:设置排序区域为A1:C6
4.2)第13行:排序区域包括标题,即A1:C1,这一行无需变化
4.3)第14行:不区分大小写
4.4)第15行:排序的方向是:自上向下
4.5)第16行:排序的方法是:xlPinYin,这是微软自带的一个方法,简单理解为按照拼音排序或者首字母排序,这个没有深入研究过,欢迎指正





