Excel VBA Sort

Es gibt verschiedene Möglichkeiten, die Daten in Microsoft Excel zu sortieren. Unter der Registerkarte Excel-Daten befindet sich ein Sortiersymbol, über das Sie Ihre Daten im Handumdrehen sortieren und die Ergebnisse abrufen können. Warum muss dann der komplexe VBA-Code geschrieben werden?

Sie müssen es jedes Mal im Hinterkopf behalten, VBA-Codes sind da, um die Dinge zu automatisieren. Angenommen, Sie haben Daten, die von Zeit zu Zeit aktualisiert werden. Vielleicht jeden Tag, jede Woche, jeden Monat usw. und Sie benötigen Ihre Daten in einer bestimmten Art und Weise sortiert. In solchen Fällen kann die VBA-SORT-Funktion verwendet werden, die sich als nützliches Hilfsmittel für Ihre Referenz herausstellt.

VBA verfügt über eine Range.Sort-Methode, um die Daten für Sie zu sortieren. Wobei Bereich den Bereich der Zellen angibt, die in aufsteigender oder absteigender Reihenfolge sortiert werden sollen.

Die Syntax für Range.Sort lautet wie folgt:

Wo,

  • Schlüssel - Spalte / Bereich, den Sie sortieren müssen. Ex. Wenn Sie die Zellen A1: A10 sortieren möchten, sollten Sie Range (A1: A10) angeben.
  • Reihenfolge - Mit diesem Parameter können Sie die Daten in aufsteigender oder absteigender Reihenfolge sortieren.
  • Header - Dies ist der Parameter, der angibt, ob Ihre Spalte / Ihr Bereich Überschriften enthält oder nicht.

Diese drei Parameter reichen für unser Vorgehen aus. Es gibt jedoch einige andere Parameter wie MatchCase, SortMethod usw., die Sie immer untersuchen und sehen können, wie sie funktionieren.

Wie verwende ich die Excel VBA-Sortierfunktion?

Wir werden lernen, wie VBA-Sortierung verwendet werden kann, um die Spalte ohne Überschriften, eine Spalte mit Überschriften und mehrere Spalten mit Beispielen in Excel zu sortieren.

Sie können diese VBA Sort Excel-Vorlage hier herunterladen - VBA Sort Excel-Vorlage

VBA-Sortierfunktion - Beispiel 1

Sortieren einer einzelnen Spalte ohne Überschrift

Angenommen, Sie haben eine Spalte mit den unten gezeigten Namen, und Sie müssen diese Daten nur alphabetisch in aufsteigender oder absteigender Reihenfolge sortieren.

Führen Sie die folgenden Schritte aus, um die Sortierfunktion in VBA zu verwenden.

Schritt 1: Definieren Sie eine neue Sup-Prozedur unter einem Modul und erstellen Sie ein Makro.

Code:

 Sub SortEx1 () End Sub 

Schritt 2: Verwenden Sie die Range.Sort-Funktion, um diese Spalte in aufsteigender Reihenfolge zu sortieren.

Code:

 Sub SortEx1 () Range ("A1", Range ("A1"). End (xlDown)). Sort End Sub 

Hier geben Sie den Bereich ab Zelle A1 bis zur zuletzt verwendeten / nicht leeren Zelle (siehe Funktion .End (xlDown)) bis zur Funktion Range.Sort an.

Schritt 3: Geben Sie nun die Argumentwerte ein.

Code:

 Sub SortEx1 () Range ("A1", Range ("A1"). End (xlDown)). Sort Key1: = Range ("A1"), Order1: = xlAscending, Header: = xlNo End Sub 

Wie bereits erwähnt, sind Key, Order und Header die wichtigen und notwendigen Argumente, die angegeben werden müssen. Wir haben Range ("A1") als Spaltenstartbereich angegeben, den wir sortieren müssen. Die Reihenfolge wird als Aufsteigend und die Überschrift als Nein angegeben (was bedeutet, dass die Spalte keine Überschrift hat).

Dieser Code überprüft alle nicht leeren Zellen ab A1 und sortiert sie in aufsteigender Reihenfolge ab Zelle A1.

Schritt 4: Führen Sie diesen Code aus, indem Sie F5 oder die Schaltfläche Ausführen manuell drücken und die Ausgabe anzeigen.

Wenn Sie dies mit dem Bild am Anfang dieses Beispiels vergleichen, können Sie sehen, dass die Namen in aufsteigender Reihenfolge sortiert sind.

VBA-Sortierfunktion - Beispiel 2

Sortieren einer einzelnen Spalte mit Überschrift

Angenommen, Sie haben eine Spalte mit der unten gezeigten Überschrift. Und Sie wollten diese Spalte in aufsteigender oder absteigender Reihenfolge sortieren.

Führen Sie die folgenden Schritte aus, um die Sortierfunktion in VBA zu verwenden.

Schritt 1: Definieren Sie eine neue Unterprozedur unter einem neuen Modell, um das Makro zu speichern.

Code:

 Sub SortEx2 () End Sub 

Schritt 2: Verwenden Sie Blätter („Beispiel 2“), um anzugeben, um welches Blatt es sich bei Ihren Daten handelt.

Code:

 Sub SortEx2 () Sheets ("Beispiel # 2") End Sub 

Schritt 3: Verwenden Sie Range ("A1"). Sortieren Sie vor der obigen Codezeile, um daraus eine Sortierfunktion zu machen.

Code:

 Sub SortEx2 () Sheets ("Beispiel # 2"). Range ("A1"). Sort End Sub 

Schritt 4: Geben Sie Key1 als Range ("A1") an, um die Daten aus Zelle A1, Order1 in aufsteigender oder absteigender Reihenfolge und Header als Yes zu sortieren, damit das System weiß, dass die erste Zeile in Ihrer Kopfzeile ist Daten.

Code:

 Sub SortEx2 () Sheets ("Beispiel # 2"). Range ("A1"). Sort Key1: = Range ("A1"), Order1: = xlAscending, Header: = xlYes End Sub 

Schritt 5: Führen Sie diesen Code aus, indem Sie manuell die Taste F5 oder Ausführen drücken und die Ausgabe anzeigen.

Hier werden die Daten aus Beispiel 2 der angegebenen Excel-Arbeitsmappe in aufsteigender Reihenfolge sortiert, da sie eine Kopfzeile haben. Das bedeutet, dass beim Sortieren dieser Daten die erste Zeile (die Emp Name enthält) vernachlässigt wird, da sie als Überschrift für diese Daten in Spalte A betrachtet wird.

Sie können dieselben Daten auch in absteigender Reihenfolge der Buchstaben sortieren. Sie müssen lediglich die Reihenfolge von aufsteigend nach absteigend ändern.

Schritt 6: Ändern Sie order1 in descending, um die Daten in absteigender Reihenfolge zu sortieren.

Code:

 Sub SortEx2 () Sheets ("Beispiel # 2"). Range ("A1"). Sort Key1: = Range ("A1"), Order1: = xlDescending, Header: = xlYes End Sub 

Schritt 7: Führen Sie den Code aus und sehen Sie eine Ausgabe wie unten angegeben.

Sie können sehen, dass die Daten in absteigender Reihenfolge sortiert sind.

VBA-Sortierfunktion - Beispiel # 3

Sortieren mehrerer Spalten mit Überschriften

Bisher haben wir uns mit dem Sortieren einzelner Spaltendaten in aufsteigender oder absteigender Reihenfolge (ohne Überschrift und mit Überschrift) befasst. Was ist, wenn Sie Daten haben, die Sie nach mehreren Spalten sortieren müssen? Ist es möglich, einen Code für dasselbe zu schreiben?

Die Antwort lautet: "Ja, das kann man doch machen!"

Angenommen, Sie haben folgende Daten:

Sie wollten diese Daten zuerst nach Mitarbeiternamen und dann nach Standort sortieren. Führen Sie die folgenden Schritte aus, um zu sehen, wie wir es in VBA codieren können.

Schritt 1: Definieren Sie eine neue Unterprozedur, um ein Makro unter einem neuen Modul hinzuzufügen.

Code:

 Sub SortEx3 () End Sub 

Schritt 2: Verwenden Sie eine With… End With- Anweisung, um mehrere Sortierbedingungen in einer einzelnen Schleife hinzuzufügen.

Code:

 Sub SortEx3 () Mit ActiveSheet.Sort End Sub 

Schritt 3: Verwenden Sie jetzt SortFields.Add, um die mehreren Sortierbedingungen in demselben Arbeitsblatt hinzuzufügen.

Code:

 Sub SortEx3 () Mit ActiveSheet.Sort .SortFields.Add Key: = Range ("A1"), Order: = xlAscending .SortFields.Add Key: = Range ("B1"), Order: = xlAscending End Sub 

Schritt 4: Wählen Sie im nächsten Schritt den zu sortierenden Bogenbereich und die Überschrift.

Code:

 Sub SortEx3 () Mit ActiveSheet.Sort .SortFields.Add-Schlüssel: = Bereich ("A1"), Reihenfolge: = xlAscending .SortFields.Add-Schlüssel: = Bereich ("B1"), Reihenfolge: = xlAscending .SetRange-Bereich ("A1") : C13 ") .Header = xlYes End Sub 

Schritt 5: Verwenden Sie .Apply, um all diese Dinge unter with statement anzuwenden und die Schleife zu schließen, in der End With geschrieben wird.

Code:

 Sub SortEx3 () Mit ActiveSheet.Sort .SortFields.Add-Schlüssel: = Bereich ("A1"), Reihenfolge: = xlAscending .SortFields.Add-Schlüssel: = Bereich ("B1"), Reihenfolge: = xlAscending .SetRange-Bereich ("A1") : C13 ") .Header = xlYes .Apply End With End Sub 

Schritt 6: Führen Sie diesen Code aus, indem Sie die Taste F5 oder Ausführen manuell drücken und die Ausgabe anzeigen.

In diesem Code hilft ActiveSheets.Sort dem System, das Blatt zu identifizieren, nach dem Daten sortiert werden sollen. Mit SortFields.Add können zwei Sortierbedingungen mit ihrer Reihenfolge hinzugefügt werden (Aufsteigend in beiden Fällen). Mit SetRange kann das System den Bereich von A1 bis C13 einstellen. Sie können diesen Bereich auch nach oben verschieben. Mit Apply-Anweisungen kann das System alle in With-Schleife vorgenommenen Änderungen anwenden.

Zuletzt erhalten Sie die Daten, die zuerst nach dem Namen des Mitarbeiters und dann nach dem Ort sortiert werden.

Dinge, an die man sich erinnern sollte

  • Unter VBA-Sortierung können Sie benannte Bereiche anstelle von Zellreferenzen erstellen und diese verwenden. Ex. Wenn Sie den benannten Bereich für Zelle A1: A10 als "EmpRange" erstellt haben, können Sie ihn unter Range.Sort like Range ("EmpRange") verwenden.
  • Sie können die Daten sowohl in aufsteigender als auch in absteigender Reihenfolge wie in Excel sortieren.
  • Wenn Sie nicht sicher sind, ob Ihre Daten eine Kopfzeile haben oder nicht, können Sie xlGuess im Abschnitt Kopfzeile verwenden, um das System raten zu lassen, ob die erste Datenzeile eine Kopfzeile ist oder nicht.

Empfohlene Artikel

Dies war eine Anleitung zu Excel VBA Sort. Hier haben wir VBA Sort und die Verwendung der Excel VBA Sort-Funktion zusammen mit praktischen Beispielen und einer herunterladbaren Excel-Vorlage besprochen. Sie können auch unsere anderen Artikelvorschläge durchgehen -

  1. Kurzanleitung zu Excel Nach Nummer sortieren
  2. Verwenden der VBA-Match-Funktion
  3. Wie sortiere ich Spalten in Excel?
  4. VBA While-Schleife | MS Excel

Kategorie: