令人困惑的是,您选择的单元格包含在排序中。
这将基于 A 列作为键过滤一系列数据 (A1:D15)(按 A 排序)。
如果愿意的话,可以按单个键排序的范围。
Sub sortbyColumnA()
Dim ws As Worksheet
Set ws = Sheets("Sheet1") 'Name your worksheet right here
If ws.AutoFilterMode = False Then ws.Range("A1:D15").AutoFilter
ws.AutoFilter.Sort.SortFields.Clear
ws.AutoFilter.Sort.SortFields.Add Key:=Range("A1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ws.AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
ws.Range("A1:D15").AutoFilter
End Sub
这是多键排序的示例,当然,您需要在第一个排序中使用多个倍数才能使第二个排序键有效,并且对于第三个排序键在第二个排序中的倍数也是如此。您可以根据需要对任意数量的键进行排序,具体取决于数据集有多大。
它首先按排名排序 - 第二个按名字排序 - 第三个按分数排序(升序,也许你想在这里降序 - 提示提示)
Sub sortbyMultiColumn()
Dim ws As Worksheet
Set ws = Sheets("Sheet1") 'Name your worksheet right here
If ws.AutoFilterMode = False Then ws.Range("A1:D33").AutoFilter
ws.AutoFilter.Sort.SortFields.Clear
'First Sort
ws.AutoFilter.Sort.SortFields.Add Key:=Range("A1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
'Second Sort
ws.AutoFilter.Sort.SortFields.Add Key:=Range("B1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
'Third Sort
ws.AutoFilter.Sort.SortFields.Add Key:=Range("D1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ws.AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
ws.Range("A1:D33").AutoFilter
End Sub