Sortieren einer Tabelle per VBA mit mehr als 3 Kriterien

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<br />    strSpalte = Chr(ActiveSheet.Range("A:G").Find(What:="Vorname").Column + 64)<br />    intLastRow = Cells(Rows.Count, 1).End(xlUp).Row<br />    strSortRange = "$A$" & intZeile & ":$" & strSpalte & "$" & intLastRow<br />    <br />    ceManNr = Chr(ActiveSheet.Range("A:G").Find(What:="ManNr").Column + 64) & intZeile<br />    ceWKN = Chr(ActiveSheet.Range("A:G").Find(What:="WKN").Column + 64) & intZeile<br />    ceGerätNr = Chr(ActiveSheet.Range("A:G").Find(What:="GerätNr").Column + 64) & intZeile<br />    ceStartreihenfolge = Chr(ActiveSheet.Range("A:G").Find(What:="Startreihenfolge").Column + 64) & intZeile<br />    ceNachname = Chr(ActiveSheet.Range("A:G").Find(What:="Nachname").Column + 64) & intZeile<br />    ceVorname = Chr(ActiveSheet.Range("A:G").Find(What:="Vorname").Column + 64) & intZeile<br /> <br />    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 in dieser Version und in Excel 2010 bis zu 64 Sortierkriterien standardmäßig unterstützt werden, siehe folgende Abbildung.