Anbei ein kleines Beispiel für das Sortieren einer Tabelle per VBA mit mehr als 3 Kriterien. Es wird sowohl das auf- als auch das absteigende Sortieren demonstriert.
Bis Excel 2003 ist die Anzahl der Sortierkriterien auf 3 beschränkt, siehe Abb.
Dieses VBA-Makro sortiert eine Liste mit 4 bzw. 5 Sortierkriterien. Den Code zur aufsteigenden Sortierung anhand von 4 Kriterien sehen Sie im nachfolgenden Listing.
Sub Sortieren_mit_4Kriterien() 'Wkn / ManNr / GerätNr / StartReihenfolge
Dim intZeile%, strSpalte$, intLastRow%, strSortRange$
Dim ceManNr$, ceWKN$, ceGerätNr$, ceStartreihenfolge$, ceNachname$, ceVorname$
On Error GoTo ende
intZeile = ActiveSheet.Range("A:G").Find(What:="Vorname").Row + 1
strSpalte = Chr(ActiveSheet.Range("A:G").Find(What:="Vorname").Column + 64)
intLastRow = Cells(Rows.Count, 1).End(xlUp).Row
strSortRange = "$A$" & intZeile & ":$" & strSpalte & "$" & intLastRow
ceManNr = Chr(ActiveSheet.Range("A:G").Find(What:="ManNr").Column + 64) & intZeile
ceWKN = Chr(ActiveSheet.Range("A:G").Find(What:="WKN").Column + 64) & intZeile
ceGerätNr = Chr(ActiveSheet.Range("A:G").Find(What:="GerätNr").Column + 64) & intZeile
ceStartreihenfolge = Chr(ActiveSheet.Range("A:G").Find(What:="Startreihenfolge").Column + 64) & intZeile
ceNachname = Chr(ActiveSheet.Range("A:G").Find(What:="Nachname").Column + 64) & intZeile
ceVorname = Chr(ActiveSheet.Range("A:G").Find(What:="Vorname").Column + 64) & intZeile
Application.ScreenUpdating = </span><span style="color: #0000ff;">False
With ActiveSheet
Range(strSortRange).Sort _
Key1:=.Range(ceStartreihenfolge), Order1:=xlAscending, Header:=xlGuess
'1=Sortierkriterium 4 = Startreihenfolge
Range(strSortRange).Sort _
Key1:=.Range(ceWKN), Order1:=xlAscending, _
Key2:=.Range(ceManNr), Order2:=xlAscending, _
Key3:=.Range(ceGerätNr), Order3:=xlDescending, Header:=xlGuess
'1=Sortierkriterium 1 = Wkn
'2=Sortierkriterium 2 = ManNr
'3=Sortierkriterium 3 = GerätNr
End With
ende:
Application.ScreenUpdating = True
End Sub
In der Datei, welche Sie herunterladen können, ist auch der Code für das Sortieren mit 5 Kriterien enthalten.
Ab Excel 2007 ist der Zusatzcode nicht mehr notwendig, da ab dieser Version bis zu 64 Sortierkriterien standardmäßig unterstützt werden, siehe folgende Abbildung.