第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。