使用多个条件排序范围

时间:2016-02-11 16:26:05

标签: excel vba excel-vba sorting

我分别在col GA和GB中有以下数据

GA   GB
1   strn
2   accn
6   thon
8   advn
9   estn
14  actn
17  cngn
37  autn
49  empn

我使用以下自动生成的代码进行A-> Z排序,其中col GA是关键范围。

   Columns("GA:GB").Select
    ActiveWorkbook.Worksheets("CSV Dump").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("CSV Dump").Sort.SortFields.Add Key:=Range("GA1"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("CSV Dump").Sort
        .SetRange Range("GA1:GB9")
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

我的问题是,col GA是否具有以下重复值:

GA   GB
1   strn
2   accn
2   thon
8   advn
9   estn
14  actn
17  cngn
37  autn
49  empn

然后我如何修改代码或通过任何其他方式从Z-> A中对col GB进行排序仅针对具有重复项的col GA中的范围?

  

预期产出:

GA   GB
1   strn
2   thon
2   accn
8   advn
9   estn
14  actn
17  cngn
37  autn
49  empn

1 个答案:

答案 0 :(得分:1)

您要做的是添加第二个排序级别。这意味着

之后
ActiveWorkbook.Worksheets("CSV Dump").Sort.SortFields.Add Key:=Range("GA1"), _
    SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

您想要输入类似的行,但是以相反的顺序引用GB列。

    ActiveWorkbook.Worksheets("CSV Dump").Sort.SortFields.Add Key:=Range("GB1"), _
    SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal