- Excel VBA范例大全
- 罗刚君编著
- 1012字
- 2020-08-26 20:14:32
第18章 多条件排序
多条件排序包括两种状况:
● 对多列进行排序,每列一个排序条件;
● 对单列进行排序,一列中多个条件。
本章对多条件排序中存在的技巧进行实例演示。
● 实例126双条件排序:首列数值升序、次列笔画降序
● 实例127背景色和拼音单列双条件排序
实例126 双条件排序:首列数值升序、次列笔画降序
【技巧说明】 以首列数值升序、次列笔画降序方式对双列进行排序。
【案例介绍】 对双列数据也可以是多列数据排序,但排序条件只有两个,当前列按数值升序排列,当前列右边列按笔画降序排列。初始数据如图4.17所示。
【案例实现】 参见以下步骤:
[1] 使用快捷键Alt+F11进入VBE(Visual Basic Editor)环境。
[2] 单击菜单【插入】\【模块】,打开模块代码窗口。
[3] 在右边代码窗口输入以下代码:
Sub双条件排序首列升序次列降序() With ActiveWorkbook.ActiveSheet.Sort .SortFields.Clear .SortFields.Add Key:=Application.Intersect(ActiveCell.EntireColumn, ActiveCell.CurrentRegion),SortOn:=xlSortOnValues, Order:= xlAscending '首列按数值升序排序 .SortFields.Add Key:=Application.Intersect(ActiveCell.Offset(0, 1) .EntireColumn, ActiveCell.CurrentRegion),SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal '次列以笔画为基准降序排序 .SetRange Application.Intersect(Selection.CurrentRegion, Selection. CurrentRegion.Offset(1, 0)) .SortMethod=xlStroke .Apply End With End Sub
[4] 关闭VBE窗口返回到工作表。
[5] 选中B5单元格(光标位置很重要,激活不同列有不同结果),用快捷键Alt+F8调出运行宏窗口,然后单击“执行”按钮,B列数据除首行外均按数值升序排列;C列按笔画排序作为次要关键字对数据按笔画降序排列,即在B列排序之后,若B列有多个相同数值,则对应的C列数据按笔画次序降序排列;若B列未出现相同数据,则次要关键字条件不起任何作用。结果如图4.18所示。
图4.17 待排序的原始数据
图4.18 已将扩展数据区域按双条件排序
提示
本实例参见光盘样本:..\第4部分\实例126.xlsm。
实例127 背景色和拼音单列双条件排序
【技巧说明】 按背景色和拼音对单列数据进行双条件排序。
【案例介绍】 对一列数据排序,将与当前单元格背景色一致的所有数据移至最顶端;对于同颜色的数据,再以第二关键字按拼音顺序进行升序排列。初始数据如图4.19所示。
【案例实现】 参见以下步骤:
[1] 使用快捷键Alt+F11进入VBE(Visual Basic Editor)环境。
[2] 单击菜单【插入】\【模块】,打开模块代码窗口。
[3] 在右边代码窗口输入以下代码:
Sub单列双条件排序背景色和拼音() With ActiveWorkbook.ActiveSheet.Sort .SortFields.Clear .SortFields.Add(Application.Intersect(ActiveCell.EntireColumn, ActiveCell.CurrentRegion),xlSortOnCellColor, xlAscending) .SortOnValue.Color=ActiveCell.Interior.Color '条件一:当前单元格背景色置顶 .SortFields.Add Key:=Application.Intersect(ActiveCell.EntireColumn, ActiveCell.CurrentRegion),SortOn:=xlSortOnValues, Order:=xlAscending .SetRange Application.Intersect(ActiveCell.EntireColumn, ActiveCell.CurrentRegion) .SortMethod=xlPinYin '条件二:中文排序方式为以拼音为基准 .Apply End With End Sub
[4] 关闭VBE窗口返回到工作表。
[5] 选中A8单元格,用快捷键Alt+F8调出运行宏窗口,然后单击“执行”按钮,则A1:A13区域中与A8单元格背景色一致的单元格置顶;同时,若有多个单元格数据与A8背景色相同,则对此多个单元格以第二条件——拼音顺序排序。结果如图4.20所示。
图4.19 待排序的原始数据
图4.20 已将单列按双条件排序
提示
本实例参见光盘样本:..\第4部分\实例127.xlsm。