![Excel VBA范例大全](https://wfqqreader-1252317822.image.myqcloud.com/cover/777/687777/b_687777.jpg)
第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所示。
![](https://epubservercos.yuewen.com/AED0BE/3590497903471501/epubprivate/OEBPS/Images/figure_0189_0007.jpg?sign=1738798945-bq2O1QLhHgPSiuDPOH3MF5bLS1d8Z57a-0-0811face9222719ce0fc7b206ffb52bf)
图4.1 待排序的原始数据
![](https://epubservercos.yuewen.com/AED0BE/3590497903471501/epubprivate/OEBPS/Images/figure_0189_0008.jpg?sign=1738798945-3Yon0FxU5MpoxeAN7U2yUTyiq9mMSy6l-0-b92d955965a459849969e0b6a0488061)
图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参数列表
![](https://epubservercos.yuewen.com/AED0BE/3590497903471501/epubprivate/OEBPS/Images/figure_0190_0001.jpg?sign=1738798945-NthfcukyDarRHgBmQ1CkA67NXbcQBTbS-0-002cd65e7117f9e1fa97d2846d386306)
(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所示。
![](https://epubservercos.yuewen.com/AED0BE/3590497903471501/epubprivate/OEBPS/Images/figure_0191_0003.jpg?sign=1738798945-izqRPwrXdhTviZ71KLnw0zzYrgur0Jya-0-a396aa49c44992ff668f16b3e9d25dd0)
图4.3 待排序的原始数据
![](https://epubservercos.yuewen.com/AED0BE/3590497903471501/epubprivate/OEBPS/Images/figure_0191_0004.jpg?sign=1738798945-MQv2NMvlO6BWDXSfVlV0KqFnlU5PSWJY-0-d21e3d37e0b72f03e027b336c19fcb96)
图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所示。
![](https://epubservercos.yuewen.com/AED0BE/3590497903471501/epubprivate/OEBPS/Images/figure_0192_0003.jpg?sign=1738798945-GVdpPMatzq5h0uyzqDyT1DOYTnWZQXL9-0-d65ba136217eec42f3dc74ad503faaeb)
图4.5 待排序的原始数据
![](https://epubservercos.yuewen.com/AED0BE/3590497903471501/epubprivate/OEBPS/Images/figure_0192_0004.jpg?sign=1738798945-g8FvUKxsb24ZEv7cvto3eyQijTP4dAgH-0-385a56d31c95ec4a7af7eb6b66053b16)
图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所示。
![](https://epubservercos.yuewen.com/AED0BE/3590497903471501/epubprivate/OEBPS/Images/figure_0193_0003.jpg?sign=1738798945-lHhjdE8fYcC1tozWNI1Qn5B0VRZGImcH-0-1cc8c680d620546f2783d8e919b49a3e)
图4.7 待排序的原始数据
![](https://epubservercos.yuewen.com/AED0BE/3590497903471501/epubprivate/OEBPS/Images/figure_0193_0004.jpg?sign=1738798945-PR1gMoUunVjwssaEfzEYKQ7BsiGwLK5j-0-6d474b1b400b459e0b5eb81606b55803)
图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所示。
![](https://epubservercos.yuewen.com/AED0BE/3590497903471501/epubprivate/OEBPS/Images/figure_0194_0003.jpg?sign=1738798945-tlLmacdemr3Q1FQgrGnbpQH6lnLMELEO-0-6e92b45b382913461f12da2a0058505d)
图4.9 待排序的原始数据
![](https://epubservercos.yuewen.com/AED0BE/3590497903471501/epubprivate/OEBPS/Images/figure_0194_0004.jpg?sign=1738798945-vbJ8RMxAWuIIgXaBqmNoLJCmDUQ9iwG1-0-4ed705e1878d2a15b4cfacf089f9b5cc)
图4.10 已将数据按笔画排序并区分大小写
提示
本实例参见光盘样本:..\第4部分\实例122.xlsm。