Excel VBA – Wie Sie Ihre Tabelle mit VBA sortieren

Dieser Beitrag ist ein Teil der VBA Grundlagen Serie.
Ich werde oft gefragt, wie man mit VBA Werte in einer Tabelle sortieren kann. In diesem Beitrag zeige ich Ihnen anhand zweier Beispiele wie es geht.

111 VBA Makros die Ihr Leben leichter machen. Egal ob Sie Einsteiger oder fortgeschrittener Anwender sind – in diesem Buch finden Sie Lösungen für Ihre alltäglichen Aufgaben. Keine Vorkenntnisse notwendig.

In der Ausgangstabelle liegen die Umsätze pro Stadt vor.

Stadt Umsatz
Berlin                       362
Hamburg                       832
München                       290
Köln                       901
Frankfurt                       335
Stuttgart                       987
Düsseldorf                       257
Dortmund                       470
Essen                       867
Leipzig                       661

Wir wollen die Tabelle nach Umsatz und nach dem Namen der Stadt sortieren.

Zu sortierende Tabelle

Dazu legen wir zunächst ein neues Makro an.

Zunächst definieren wir die Parameter und legen so fest welcher Bereich sortiert werden soll. Zunächst wollen wir nach Umsatz in der Spalte B sortieren.


Sub SortierenUmsatz()
Dim strSpalte As String
Dim strBereich As String

'Parameter
strBereich = "A1:B11"
strSpalte = "B"

Dazu nutzen wir die Sort-Methode die einen Bereich mit Werten sortiert. Diese Methode hat eine Reihe von Parametern, von denen wir nur ein Paar nutzen werden. Eine vollständige Auflistung aller Parameter finden Sie in der Microsoft VBA Referenz.

Wir wollen die Umsätze in der Spalte B aufsteigend sortieren. Dazu müssen wir in Key1 das erste Sortierfeld angeben, dieses bestimmt die zu sortierenden Werte. Bei Bedarf können Sie auch mehrere Sortierfelder definieren. Das Sortierfeld kann entweder als Bereichsname oder als Range-Objekt übergeben werden. Wir entscheiden uns zwecks Flexibilität für das Range-Objekt.

Im zweiten Parameter Order1 bestimmen Sie über xlAscending (aufsteigend) oder xlDescending (absteigend) die Sortierreihenfolge. Darüber hinaus teilen wir Excel über den Parameter Header mit, dass unsere Tabelle Überschriften enthält. Wenn Sie hier den Wert xlGuess verwendet, versucht Excel für Sie zu bestimmen, ob eine Tabelle Überschriften hat oder nicht.

Das vollständige Makro sieht also wie folgt aus:


Sub SortierenUmsatz()
Dim strSpalte As String
Dim strBereich As String

'Parameter
strBereich = "A1:B11"
strSpalte = "B"

'Sortieren
With Tabelle1
Range(strBereich).Sort _
 Key1:=Range(strSpalte & "1"), Order1:=xlAscending, _
 Header:=xlYes
End With
End Sub

Wie Sie das Makro ausführen, erfolgt die Sortierung nach Umsatz:

Stadt Umsatz
Düsseldorf                       257
München                       290
Frankfurt                       335
Berlin                       362
Dortmund                       470
Leipzig                       661
Hamburg                       832
Essen                       867
Köln                       901
Stuttgart                       987

Unternehmensplanung mit SAP BPC

111 VBA Makros die Ihr Leben leichter machen

Wollen Sie Ihre langweiligen Routineaufgaben loswerden? Möchten Sie Excel an Ihre Bedürfnisse anpassen, Berechnungen automatisieren, eigene Dialogfelder erstellen und vieles mehr? Dieses Buch zeigt Ihnen, wie Sie Ihre Aufgaben schnell und einfach mit VBA erledigen.

Nun Sie die Städte nach Umsatz aufgelistet.
Städte nach Umsatz sortiert

Nun wollen wir die Städte alphabetisch anordnen. Dabei stelle ich einen neuen Parameter vor. Mit MatchCase können Sie festlegen, ob Groß-/Kleinschreibung berücksichtigt werden soll.
Für das neue Makro ändern wir einfach den Parameter strSpalte und fügen MatchCase hinzu.


Sub SortierenStadt()
Dim strSpalte As String
Dim strBereich As String

'Parameter
strBereich = "A1:B11"
strSpalte = "A"

'Sortieren
With Tabelle1
Range(strBereich).Sort _
 Key1:=Range(strSpalte & "1"), Order1:=xlAscending, _
 Header:=xlYes, MatchCase:=True
End With
End Sub

Wenn Sie das Makro ausführen, wird die Tabelle aufsteigend nach Städten sortiert.

Stadt Umsatz
Berlin                       362
Dortmund                       470
Düsseldorf                       257
Essen                       867
Frankfurt                       335
Hamburg                       832
Köln                       901
Leipzig                       661
München                       290
Stuttgart                       987

Tabelle alphabetisch sortiert
Die Beispiel Excel Datei mit dem sofort einsetzbaren Makro und 111+ andere Makros, die Ihr Leben leichter machen, finden Sie hier.

Beeindrucke deinen Chef mit coolen Excel Tricks!

  • Lasse dich von deinen Kollegen nicht abhängen!
  • Spare Zeit und nutze diese für angenehmere Dinge
  • Steigere deine Produktivität und Effizienz
  • Es ist leicht - In meinem Newsletter gebe ich Schritt für Schritt Anleitungen die jeder versteht
  • Bei der Anmeldung zu meinem Newsletter erhälst du das Buch „Excel Tricks die deinen Chef beeindrucken“ als Willkommensgeschenk.
20 Excel Tricks

Jetzt anfordern!

* Pflichtfeld
 
Kein SPAM. 100% sicher.

Weiterführende Links:
Range.Sort-Methode
Falls Ihnen dieser Beitrag weitergeholfen hat, wäre es eine sehr nette Anerkennung meiner Arbeit wenn Sie z.B. Ihre Bücher über Amazon bestellen würden. Wenn Sie ein Produkt kaufen, erhalte ich dafür eine Provision. Für Sie ändert sich am Preis des Produktes gar nichts. Ich möchte mich an dieser Stelle jetzt schon für Ihre Unterstützung bedanken.

Bildquelle: Pixabay, CC0 Public Domain

4 Kommentare
  1. Rike
    Rike sagte:

    Hallo Denis,

    danke für die ausführliche Erklärung. Konnte ich super gebrauchen.
    Leider habe ich das Problem, dass in meiner Tabelle welche Spalte A bis N umfasst und nach Spalte M sortiert wird, Spalte N nicht mitsortiert wird sondern einfach stehen bleibt.

    Daher die Frage: Wofür steht die „1“ in dieser Code-Zeile:
    Key1:=Range(strSpalte & „1“), Order1:=xlAscending, _

    Danke und viele Grüße
    Friederike

    Antworten
      • Jürgen Lerch
        Jürgen Lerch sagte:

        Das ist eine Zusammen setzung aus strSpalte was in dem Beispiel „A“ ist und 1 … also ergibt sich daraus die Zelle A1 … Das & in Range ist ein Verknüpfungszeichen

        Antworten
  2. tom
    tom sagte:

    Hallo – vielen Dank für das tolle Makro.
    Angenommen ich hätte mehrere Tabellenblätter (Tabelle1, Tabelle2, Tabelle3)
    Wie müsste man das Makro ändern, damit es den Umsatz über alle Blätter sortiert?
    vielen dank und schöne Grüße Tom

    Antworten

Hinterlasse einen Kommentar

An der Diskussion beteiligen?
Hinterlasse uns deinen Kommentar!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.