第4部分 排序
当工作表中存有大量数据时,为了便于观察,往往需要对数据按照一定的标准进行排序,包括汉字笔画顺序、汉字拼音顺序、数值大小顺序、单元格字体颜色顺序及单元格背景色顺序等。
按颜色和图标排序是Excel 2007新增功能,若保存为Excel 2003及以前版本的兼容格式,将无法正常再对其顺序做相应修改。
本部分主要知识点:
● 对数字和文本排序
● 按颜色排序
● 多条件排序
第16章 对数字和文本排序
对数字排序一般按其值的大小以升序或者降序排列;对文本排序则可以笔画和拼音顺序进行排序。本章通过5个实例对数字和文本排序的技巧进行讲解。
● 实例118对选区数字以升序排序
● 实例119对选区文本以字母顺序升序排序
● 实例120对选区文本以笔画顺序降序排序
● 实例121对选区数据按拼音排序并区分大小写
● 实例122对选区数据按笔画排序并区分大小写
实例118 对选区数字以升序排序
【技巧说明】 对选区数字以升序排序。
【案例介绍】 将选区数字按从小到大的顺序重新排序,但标题不参与排序。初始数据如图4.1所示。
【案例实现】 参见以下步骤:
[1] 使用快捷键Alt+F11进入VBE(Visual Basic Editor)环境。
[2] 单击菜单【插入】\【模块】,打开模块代码窗口。
[3] 在右边代码窗口输入以下代码:
Sub对选区数值以升序排序且有标题() With ActiveWorkbook.ActiveSheet.Sort .SortFields.Clear '清除原排序信息 .SortFields.Add Key:=ActiveCell, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal .SetRange Application.Intersect(Selection, Selection.Offset(1, 0))'区域 .Apply End With End Sub
[4] 关闭VBE窗口返回到工作表。
[5] 选中A1∶A11单元格,用快捷键Alt+F8调出运行宏窗口,然后单击“执行”按钮,选区数据立即按升序排序,而首行标题不参与排序,结果如图4.2所示。
图4.1 待排序的原始数据
图4.2 已将数字按升序排列
提示
本实例参见光盘样本:..\第4部分\实例118.xlsm。
【相关知识说明】
(1)Sort:对值区域进行排序。语法如下(各参数含义见表4.1):
range.Sort(Key1, Order1, Key2, Type, Order2, Key3, Order3, Header, OrderCustom, MatchCase, Orientation, SortMethod, DataOption1, DataOption2, DataOption3)
表4.1 Sort参数列表
(2)Sort.SetRange:设置排序对象的区域。这个参数重别重要,调整区域可以决定排序区域中的首行是否参与排序。本例以Intersect(Selection, Selection.Offset(1, 0))方法排除选区的首行,使之成为标题不参与排序;若要参与排序则直接改为Selection即可。
实例119 对选区文本以字母顺序升序排序
【技巧说明】 对选区文本以字母顺序升序排序。
【案例介绍】 将选区字母按字母顺序升序重新排序,但标题不参与排序。初始数据如图4.3所示。
【案例实现】 参见以下步骤:
[1] 使用快捷键Alt+F11进入VBE(Visual Basic Editor)环境。
[2] 单击菜单【插入】\【模块】,打开模块代码窗口。
[3] 在右边代码窗口输入以下代码:
Sub对选区文本以字母顺序升序排序且有标题() With ActiveWorkbook.ActiveSheet.Sort .SortFields.Clear '清除原排序信息 'Order:=xlAscending表示升序,Order:=xlDescending表示降序 .SortFields.Add Key:=ActiveCell, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal .SetRange Application.Intersect(Selection, Selection.Offset(1, 0))'区域 .SortMethod=xlPinYin '中文排序方式为以拼音为基准 .Apply End With End Sub
[4] 关闭VBE窗口返回到工作表。
[5] 选中A1∶A13单元格,用快捷键Alt+F8调出运行宏窗口,然后单击“执行”按钮,选区字母立即按升序排序,而首行标题不参与排序,结果如图4.4所示。
图4.3 待排序的原始数据
图4.4 已将字母按升序排列
提示
本实例参见光盘样本:..\第4部分\实例119.xlsm。
【相关知识说明】
SortMethod=xlPinYin:表示排序方式是按拼音顺序排列。
实例120 对选区文本以笔画顺序降序排序
【技巧说明】 对选区文本以笔画顺序降序排序。
【案例介绍】 将选区文本按笔画顺序从多到少重新排序,但标题不参与排序。初始数据如图4.5所示。
【案例实现】 参见以下步骤:
[1] 使用快捷键Alt+F11进入VBE(Visual Basic Editor)环境。
[2] 单击菜单【插入】\【模块】,打开模块代码窗口。
[3] 在右边代码窗口输入以下代码:
Sub对选区文本以笔画顺序降序排序且有标题() With ActiveWorkbook.ActiveSheet.Sort .SortFields.Clear '清除原排序信息 .SortFields.Add Key:=ActiveCell, SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal .SetRange Application.Intersect(Selection, Selection.Offset(1, 0)) .SortMethod=xlStroke '中文排序方式以笔画为基准 .Apply End With End Sub
[4] 关闭VBE窗口返回到工作表。
[5] 选中A1∶A11单元格,用快捷键Alt+F8调出运行宏窗口,然后单击“执行”按钮,选区文本立即按升序排序,而首行标题不参与排序,结果如图4.6所示。
图4.5 待排序的原始数据
图4.6 已将文本按降序排列
提示
本实例参见光盘样本:..\第4部分\实例120.xlsm。
【相关知识说明】
SortMethod=xlStroke:表示排序方式是按笔画顺序排列。
实例121 对选区数据按拼音排序并区分大小写
【技巧说明】 对选区数据按拼音排序并区分大小写。
【案例介绍】 将选区文本按拼音顺序重新排序并区分大小写,但标题不参与排序。初始数据如图4.7所示。
【案例实现】 参见以下步骤:
[1] 使用快捷键Alt+F11进入VBE(Visual Basic Editor)环境。
[2] 单击菜单【插入】\【模块】,打开模块代码窗口。
[3] 在右边代码窗口输入以下代码:
Sub对选区文本分大小写按拼音顺序排序() With ActiveWorkbook.ActiveSheet.Sort .SortFields.Clear '清除原排序信息 .SortFields.Add Key:=ActiveCell, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal .SetRange Application.Intersect(Selection, Selection.Offset(1, 0))'区域 .MatchCase=True '区分大小写 .SortMethod=xlPinYin '按拼音排序 .Apply End With End Sub
[4] 关闭VBE窗口返回到工作表。
[5] 选中A1∶A13单元格,用快捷键Alt+F8调出运行宏窗口,然后单击“执行”按钮,选区字母立即按升序排序,而首行标题不参与排序,结果如图4.8所示。
图4.7 待排序的原始数据
图4.8 已将数据按拼音顺序排序且区分大小写
提示
本实例参见光盘样本:..\第4部分\实例121.xlsm。
【相关知识说明】
MatchCase:如果设置为True,则执行区分大小写的排序;如果设置为False,则执行不区分大小写的排序。可读/写。
实例122 对选区数据按笔画排序并区分大小写
【技巧说明】 对选区数据按笔画排序并区分大小写。
【案例介绍】 将选区文本按笔画顺序从少到多重新排序,对其中字母区分大小写,标题不参与排序。初始数据如图4.9所示。
【案例实现】 参见以下步骤:
[1] 使用快捷键Alt+F11进入VBE(Visual Basic Editor)环境。
[2] 单击菜单【插入】\【模块】,打开模块代码窗口。
[3] 在右边代码窗口输入以下代码:
Sub对选区文本分大小写排序() With ActiveWorkbook.ActiveSheet.Sort .SortFields.Clear '清除原排序信息 .SortFields.Add Key:=ActiveCell, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal .SetRange Application.Intersect(Selection, Selection.Offset(1, 0))'区域 .MatchCase=True '区分大小写 .SortMethod=xlStroke '按笔画排序 .Apply End With End Sub
[4] 关闭VBE窗口返回到工作表。
[5] 选中A1∶A13单元格,用快捷键Alt+F8调出运行宏窗口,然后单击“执行”按钮,选区数据立即按升序排序,而首行标题不参与排序,结果如图4.10所示。
图4.9 待排序的原始数据
图4.10 已将数据按笔画排序并区分大小写
提示
本实例参见光盘样本:..\第4部分\实例122.xlsm。