令人困惑的是,您正在选择一个包含在排序中的单元格。
这将基于 A 列作为键(按 A 排序)过滤一系列数据 (A1:D15)。
如果愿意,可以按单个键排序范围。
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