按VBA中的文本值排序

时间:2016-08-31 19:52:15

标签: excel vba excel-vba sorting

在我的电子表格上运行VBA功能后,我想自动重新排序数据,因此用户不必这样做。我试图完成的排序选项如下:

enter image description here

我的vba代码目前是:

Columns("A:AA").Sort key1:=Range("C1:C1"), order1:=xlAscending, key2:=Range("G1:G1"), order2:=xlAscending, key3:=Range("A1:A1"), order3:=xlAscending, Header:=xlYes

正如您所看到的,A列将正确排序,但其他2列将不会根据Fail, Dismissed, Passed条件和Critical, High, Medium, Low

进行排序

我正在尝试做什么?有没有人知道指定这些排序的方法?

1 个答案:

答案 0 :(得分:2)

使用宏录制器让我看到以下代码:

With ActiveSheet
    .Sort.SortFields.Clear
    .Sort.SortFields.Add Key:=.Range("C:C"), _
                         SortOn:=xlSortOnValues, _
                         Order:=xlAscending, _
                         CustomOrder:="Fail,Dismissed,Passed", _
                         DataOption:=xlSortNormal
    .Sort.SortFields.Add Key:=.Range("G:G"), _
                         SortOn:=xlSortOnValues, _
                         Order:=xlAscending, _
                         CustomOrder:="Critical,High,Medium,Low", _
                         DataOption:=xlSortNormal
    .Sort.SortFields.Add Key:=.Range("A:A"), _
                         SortOn:=xlSortOnValues, _
                         Order:=xlAscending, _
                         DataOption:=xlSortNormal
    .Sort.SetRange .Range("A:AA")
    .Sort.Header = xlYes
    .Sort.MatchCase = False
    .Sort.Orientation = xlTopToBottom
    .Sort.SortMethod = xlPinYin
    .Sort.Apply
End With

希望这应该做你想要的。