Inhaltsverzeichnis
So sortieren Sie in Excel mit VBA anwenden, müssen Sie die Bereich.Sortieren In diesem Artikel werden wir Ihnen zeigen, wie Sie die Spalte sortieren in Excel mit der Option Bereich.Sortieren Methode der VBA .
Arbeitsbuch herunterladen
Sie können die kostenlose Excel-Arbeitsmappe für die Praxis hier herunterladen.
Spalte mit VBA sortieren.xlsm
Range.Sort Methode in Excel VBA
Bereich.Sortieren Methode in VBA sortiert einen Wertebereich in Excel. hier Bereich ist eine Objektvariable, die den Bereich der Zellen angibt, die wir in auf- oder absteigender Reihenfolge sortieren.
Im Folgenden sind die Parameter aufgeführt, die Sie bei der Arbeit mit dieser Methode kennen müssen.
Parameter | Erforderlich/ Fakultativ | Datenart | Beschreibung |
---|---|---|---|
Schlüssel | Optional | Variante | Gibt den Bereich oder die Spalte an, deren Werte sortiert werden sollen. |
Bestellung | Optional | XlSortOrder | Legt die Reihenfolge fest, in der die Sortierung durchgeführt werden soll.
|
Kopfzeile | Optional | XlYesNoGuess | Gibt an, ob die erste Zeile Kopfzeilen enthält oder nicht.
|
4 Methoden zur Implementierung von VBA zum Sortieren von Spalten in Excel
In diesem Abschnitt erfahren Sie, wie Sie Sortieren einer einzelnen Spalte mit und ohne Überschrift , mehrere Spalten mit und ohne Überschriften und wie man Sortieren durch Doppelklick auf die Überschrift einer Spalte in Excel.
1. einbetten von VBA zum Sortieren einer einzelnen Spalte ohne Kopfzeile in Excel
Wenn Sie möchten, dass eine einzelne Spalte sortieren in Ihrem Excel-Arbeitsblatt mit VBA Code, dann folgen Sie den nachstehenden Schritten.
Dies ist unsere Spalte, nach der wir sortieren werden VBA Code.
Schritte:
- Presse Alt + F11 auf Ihrer Tastatur oder gehen Sie auf die Registerkarte Entwickler -> Visual Basic zu öffnen Visual Basic-Editor .
- Klicken Sie im Pop-up-Code-Fenster in der Menüleiste auf Einfügen -> Modul .
- Kopieren Sie den folgenden Code und fügen Sie ihn in das Codefenster ein.
Sub SortSingleColumnWithoutHeader() Range("B5:B15").Sort Key1:=Range("B5"), Order1:=xlAscending, Header:=xlNo End Sub
Ihr Code ist nun einsatzbereit.
Hier,
- Schlüssel1:=Bereich("B5") → Spezifiziert B5 um dem Code mitzuteilen, welche Spalte sortiert werden soll.
- Auftrag1:=xlAscending → Die Bestellung wurde angegeben als xlAufsteigend um die Spalte in aufsteigender Reihenfolge zu sortieren. Wenn Sie die Spalte in absteigender Reihenfolge sortieren wollen, schreiben Sie xlAbsteigend stattdessen.
- Überschrift:= xlNo → Da unsere Spalte keine Überschrift hat, haben wir sie mit der Option xlNein Option.
- Presse F5 auf Ihrer Tastatur oder wählen Sie in der Menüleiste Run -> Run Sub/UserForm Sie können auch einfach auf die Schaltfläche kleines Play-Symbol in der Untermenüleiste, um das Makro auszuführen.
Sie werden sehen, dass Ihre Spalte jetzt in aufsteigender Reihenfolge sortiert .
Beachten Sie, dass wir hier den Datenbereich manuell definiert haben als Bereich("B5:B15") .
Wenn Sie Daten durch Hinzufügen oder Löschen von Werten ändern möchten, können Sie den folgenden Code implementieren, der automatisch auf der Grundlage der Zellen im Datensatz aktualisiert wird.
Sub SortSingleColumnWithoutHeader() Range("B5", Range("B5").End(xlDown)).Sort Key1:=Range("B5"), Order1:=xlAscending, Header:=xlNo End Sub
Beachten Sie, dass anstelle der manuellen Definition des Bereichs durch Bereich("B5:B15") haben wir geschrieben, Bereich( "B5", Bereich("B5"). Ende(xlDown)) .
Dadurch wird die Spalte nach der letzten fortlaufend ausgefüllten Zelle sortiert. Wenn leere Zellen vorhanden sind, werden die Daten nur bis zur ersten leeren Zelle berücksichtigt.
Lesen Sie mehr: VBA zum Sortieren von Tabellen in Excel (4 Methoden)
2. ein VBA-Makro zum Sortieren einer einzelnen Spalte mit Überschrift einfügen
Im vorigen Abschnitt hatten wir einen Datensatz mit einer einzigen Spalte ohne Überschrift, aber jetzt haben wir a Spalte mit einer Überschrift .
Dieses Mal werden wir lernen, wie man sie mit VBA-Makro .
Schritte:
- Auf die gleiche Weise wie zuvor, öffnen Sie Visual Basic-Editor von der Entwickler Registerkarte und einfügen. a Modul im Code-Fenster.
- Kopieren Sie im Codefenster den folgenden Code und fügen Sie ihn ein.
Sub SortSingleColumnWithHeader() Range("B5:B16").Sort Key1:=Range("B5"), Order1:=xlDescending, Header:=xlYes End Sub
Ihr Code ist nun einsatzbereit.
Hier,
- Schlüssel1:=Bereich("B5") → Spezifiziert B5 um dem Code mitzuteilen, welche Spalte sortiert werden soll.
- Reihenfolge1:=xlDescending → Diesmal werden wir die Spalte in absteigender Reihenfolge sortieren, also geben Sie die Reihenfolge als xlAbsteigend .
- Kopfzeile:= xlJa → Da unsere Spalte dieses Mal eine Überschrift hat, haben wir sie mit der Option xlJa Option.
- ausführen. diesen Code und Sie erhalten die Spalte mit Überschrift absteigend sortiert .
Lesen Sie mehr: Sortieren von ListBoxen mit VBA in Excel (Eine vollständige Anleitung)
Ähnliche Lektüre:
- Wie man IP-Adressen in Excel sortiert (6 Methoden)
- [Gelöst!] Excel Sortierung funktioniert nicht (2 Lösungen)
- Hinzufügen einer Sortierschaltfläche in Excel (7 Methoden)
- Sortierbereich mit VBA in Excel (6 Beispiele)
- Wie man in Excel nach Namen sortiert (3 Beispiele)
3) VBA-Makro zum Sortieren mehrerer Spalten mit oder ohne Kopfzeile
Sie können auch mehrere Spalten in Ihrem Datensatz mit VBA-Code sortieren.
Schritte:
- Wie bereits erwähnt, sind offene Visual Basic-Editor von der Entwickler Registerkarte und einfügen. a Modul im Code-Fenster.
- Kopieren Sie im Codefenster den folgenden Code und fügen Sie ihn ein.
Sub SortMultipleColumnsWithHeaders() With ActiveSheet.Sort .SortFields.Add Key:=Range("B4"), Order:=xlAscending .SortFields.Add Key:=Range("C4"), Order:=xlAscending .SetRange Range("B4:D15") .Header = xlYes .Apply End With End Sub
Ihr Code ist nun einsatzbereit.
Hier,
.SortFields.Add Schlüssel:=Bereich("B4"), Reihenfolge:=xlAscending
.SortFields.Add Key:=Range("C4"), Order:=xlAscending
Mit diesen beiden Zeilen definieren wir Zelle B4 und C4 zum Sortieren der zwei mit ihnen verbundene Spalten in aufsteigende Reihenfolge .
Da wir Kopfzeilen in unserem Datensatz haben, haben wir angegeben Überschrift = xlYes , sonst hätten wir geschrieben Überschrift = xlNo innerhalb des Codes.
- ausführen. diesen Code und Sie erhalten die Spalten mit Überschrift in aufsteigender Reihenfolge sortiert .
4 Makro zum Sortieren von Daten durch Doppelklick auf die Kopfzeile in Excel
Wenn Sie die Daten einfach sortieren möchten, indem Sie Doppelklick auf die Kopfzeile können Sie dies tun mit VBA Code.
Schritte:
- Klicken Sie mit der rechten Maustaste auf . über die Registerkarte "Blatt .
- Klicken Sie in der angezeigten Optionsliste auf Code anzeigen .
- Das Code-Fenster erscheint. Kopieren Sie den folgenden Code und fügen Sie ihn dort ein.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim iRange As Range Dim iCount As Integer iCount = Range("B4:D15").Columns.Count Cancel = False If Target.Row = 4 And Target.Column <= iCount Then Cancel = True Set iRange = Range(Target.Address) Range("B4:D15").Sort Key1:=iRange, Header:=xlYes End If End Sub
- Speichern Sie den Code.
- Gehen Sie nun zurück zu dem Arbeitsblatt, das Sie interessiert, und wenn Sie Doppelklick auf die Überschriften werden Sie sehen, dass die Spalten neu geordnet werden.
Lesen Sie mehr: Wie man Daten in Excel sortiert und filtert (eine vollständige Anleitung)
Dinge zum Merken
- Sie können einen benannten Bereich erstellen und ihn stattdessen verwenden, wenn Sie einen Bereich von Zellreferenzen innerhalb der Sortieren Wenn Sie zum Beispiel einen Bereich sortieren wollen A1:A10 zu verwenden, können Sie, anstatt ihn jedes Mal im Code zu übergeben, einen benannten Bereich davon erstellen, z. B. " SortRange " und verwenden Sie es mit dem Bereich.Sortieren Methode wie Bereich("SortRange") .
- Wenn Sie sich nicht sicher sind, ob Ihr Datensatz Kopfzeilen hat oder nicht, können Sie dies vom System feststellen lassen, indem Sie die xlRaten Sie Parameter.
Schlussfolgerung
Dieser Artikel zeigt Ihnen, wie Sie die Spalte sortieren in Excel VBA Ich hoffe, dass dieser Artikel für Sie von Nutzen war. Wenn Sie Fragen zum Thema haben, können Sie sich gerne an mich wenden.