VBA|多關鍵字排序

1 Range對象的Sort方法

使用Range對象的Sort方法對區域進行排序時,同時最多只能指定3個關鍵字,當需要超過3個關鍵字對區域進行排序時,可以通過執行多次Sort方法來實現。需要注意的是在排序時應按照各關鍵字的倒序順序,例如,如果需要按A→B→C→D的關鍵字順序進行排序,則應按D→C→B→A的順序執行Sort方法。

如有以下工作表數據:

姓名基礎知識教育學心理學教育教學技能教育法規總成績
同學12722212623119
同學102330473226158
同學112548483634191
同學142347443654204
同學154130325434191
同學162439363333165
同學43329322323140
同學54147244336191
同學63138472526167
同學72127424329162

需要'按"總成績"、"基礎知識"、"心理學"、"教育學"排序:

Advertisements

Sub sortByKeys()

With Me.Range("A1")

.Sort key1:="教育學", order1:=xlDescending, _

key2:="心理學", order2:=xlDescending, Header:=xlYes

.Sort key1:="總成績", order1:=xlDescending, _

key2:="基礎知識", order2:=xlDescending, Header:=xlYes

End With

End Sub

代碼運行效果:

姓名基礎知識教育學心理學教育教學技能教育法規總成績
同學142347443654204
同學54147244336191
同學154130325434191
同學112548483634191
同學63138472526167
同學162439363333165
同學72127424329162
同學102330473226158
同學43329322323140
同學12722212623119

上述代碼運行后,對應的「排序」對話框(數據→排序):

Advertisements

2 Worksheet對象的Sort方法

Sub MoreKeySort()

With ActiveSheet.Sort.SortFields

.Clear

.Add Key:=Range("G1"), SortOn:=xlSortOnValues,Order:=xlDescending

.Add Key:=Range("B1"), SortOn:=xlSortOnValues,Order:=xlAscending

.Add Key:=Range("C1"), SortOn:=xlSortOnValues,Order:=xlDescending

.Add Key:=Range("D1"), SortOn:=xlSortOnValues,Order:=xlDescending

End With

With ActiveSheet.Sort

.SetRange Me.Range("A1").CurrentRegion '指定排序區域

.Header = xlYes '指定排序區域包含標題

.Apply '應用工作表排序

End With

End Sub

代碼運行效果:

姓名基礎知識教育學心理學教育教學技能教育法規總成績
同學142347443654204
同學112548483634191
同學54147244336191
同學154130325434191
同學63138472526167
同學162439363333165
同學72127424329162
同學102330473226158
同學43329322323140
同學12722212623119

上述代碼運行后,對應的「排序」對話框(數據→排序):

Advertisements

你可能會喜歡