Sortieren von Bereichen mit VBA in Excel (6 Beispiele)

  • Teile Das
Hugh West

Zu wissen, wie man mit VBA in Excel Bereiche sortiert, spart Zeit und Mühe bei den täglichen Berechnungen. Obwohl Excel standardmäßig eine Sortierfunktion bietet, kann man mit dem Befehl Bereich.Sortieren Methode erhalten wir Zugang zu mehreren Parametern, um einen Datensatz mit mehr Optionen als üblich zu sortieren.

Download Arbeitsbuch Praxis

Laden Sie dieses Übungsheft herunter, um zu üben, während Sie diesen Artikel lesen.

Bereich in Excel sortieren.xlsm

Einführung in die Range.Sort-Anweisung in Excel VBA

Zielsetzung: So sortieren Sie einen Bereich von Zelldaten.

Syntax:

Ausdruck .sortieren ( Taste1 , Bestellung1 , Taste2 , Typ , Bestellung2 , Taste3 , Bestellung3 , Kopfzeile , BestellungCustom , MatchCase , Orientierung , SortMethode , DatenOption1 , DatenOption2 , DatenOption3 )

Hier ist die Ausdruck stellt eine Bereich Objekt, d.h. eine Zelle, eine Zeile, eine Spalte oder eine Auswahl von Zellen.

Argumente:

Wir müssen Folgendes bereitstellen drei wichtigsten Parameter für die Bereich.Sortieren Methode. Sie sind...

Schlüssel - Der Bereich von Zellen aus einzelnen oder mehreren Spalten, die sortiert werden sollen.

Bestellung - Geben Sie die Sortierreihenfolge entweder aufsteigend oder absteigend an.

Kopfzeile - Geben Sie an, ob die zu sortierenden Spalten eine Überschrift haben oder nicht.

6 Beispiele zum Sortieren von Bereichen in Excel VBA

In diesem Artikel verwenden wir als Datensatz eine Liste von Personennamen mit ihrem Geburtsdatum und Alter. Wir werden verschiedene Methoden anwenden, um den Datensatz zu sortieren. Gehen wir den Artikel durch und üben wir, um diese Methoden zu beherrschen.

1. Sortieren eines einspaltigen Bereichs mit Excel VBA

In diesem Beispiel werden wir sortieren Menschen aus älteste zu jüngste Folgen wir den Schritten zur Verwendung der Bereich . Sortieren Methode das wird sortieren die Spalte Alter in absteigende Reihenfolge .

Schritte:

  • Gehen Sie zum Registerkarte "Entwickler im Excel-Farbband zu anklicken. über die Visual Basic

  • Wählen Sie dann die Modul-Option von der Registerkarte einfügen zum Öffnen einer neues Modul .

Jetzt fügen wir unseren Code in sortieren die Alter Spaltenbereich.

1.1 Säule mit Überschrift

Geben Sie den folgenden Code in den visuellen Code-Editor ein.

 Sub SortRange() Range("D4:D11").Sort Key1:=Range("D4"), _ Order1:=xlDescending, _ Header:=xlYes End Sub 

Presse F5 oder klicken Sie auf die ausführen. Taste zu ausführen. den Code.

Erläuterung:

In dem obigen Code setzen wir-

Ausdruck (Range-Objekt)=Range("D4:D11"); die Altersspalte mit einer Kopfzeile in Zelle D4 und Werte in D5:D11.

Schlüssel = Bereich("D4"); die Schlüssel für Sortieren.

Reihenfolge= xlDescending; wie wir es wollen sortieren Werte von größte zu niedrigste stellen wir die Sortierreihenfolge als absteigend.

Kopfzeile =xlYes; Auf dem folgenden Screenshot ist zu sehen, dass die Datensatz hat eine Kopfzeile für jede der Spalten.

1.2 Säule ohne Kopfzeile

Geben Sie den folgenden Code in den visuellen Code-Editor ein.

 Sub SortRange() Range("D4:D10").Sort Key1:=Range("D4"), _ Order1:=xlDescending, _ Header:=xlNo End Sub 

Presse F5 oder klicken Sie auf die ausführen. Taste zu ausführen. den Code.

Erläuterung:

In dem obigen Code setzen wir-

Ausdruck (Range-Objekt)=Range("D4:D10"); die Altersspalte ohne eine Kopfzeile hat Werte in D4:D10.

Schlüssel = Bereich("D4"); die Schlüssel für Sortieren.

Reihenfolge= xlDescending; wie wir es wollen sortieren Werte von größte zu niedrigste stellen wir die Sortierreihenfolge als absteigend.

Überschrift =xlNo; Auf dem folgenden Screenshot ist zu sehen, dass die Datensatz hat keine Kopfzeile.

Verwandte Inhalte: Wie man Spalten in Excel sortiert, ohne Daten zu vermischen (3 Wege)

2. VBA-Code zum Sortieren eines mehrspaltigen Bereichs in Excel verwenden

So zeigen Sie die Sortierung in mehrere Spalten müssen wir ändern. unser Datensatz ein wenig. Wir eingefügt ein paar neu Zeilen In dem geänderten Datensatz sind die Zeilen 7, 8, und 9 haben die dieselbe Werte für die Geburtsdatum und Alter sondern drei verschiedene Namen . diese Namen sind nicht in jedem konkrete Bestellung aufzusteigen oder abzusteigen.

In diesem Beispiel ordnen wir die Namen in aufsteigende Reihenfolge Führen wir den folgenden Code im Visual Basic-Editor aus:

 Sub SortRange() Range("B4:D12").Sort Key1:=Range("D4"), _ Order1:=xlDescending, _ Key2:=Range("B4"), _ Order2:=xlAscending, _ Header:=xlYes End Sub 

Erläuterung:

Im obigen Screenshot sehen wir, dass die Altersangaben in Spalte D sind sortiert in absteigend Ordnung. Wir haben zwei weitere Parameter in unserem vorherigen Code.

Taste2: =Bereich("B4") , die Taste zum Sortieren der Namen.

Bestellung2: =xlAscending die Bestellung für Leerverkaufsnamen .

Infolgedessen sehen wir die Namen in Zeilen 7, 8 und 9 sind jetzt alphabetisch einsortiert aufsteigend bestellen.

In dem folgenden Screenshot haben wir die Wert der Parameter Bestellung2 zu sortieren die Namen in absteigend bestellen.

Lesen Sie mehr: Wie man mehrere Spalten in Excel sortiert (5 Schnellansätze)

3. Doppelklick auf die Kopfzeile zum Sortieren des Spaltenbereichs in Excel VBA

Die Standard-Sortierfunktion von Excel erlaubt es nicht Werte sortieren einer Spalte durch Doppelklick auf die Spaltenüberschrift Mit Hilfe von VBA-Code können wir dies jedoch bewerkstelligen. Veranschaulichen wir diese Funktionalität anhand des folgenden Codes.

 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim KeyRange As Range Dim ColCount As Integer ColCount = Range("A1:C8").Columns.Count Cancel = False If Target.Row = 1 And Target.Column <= ColCount Then Cancel = True Set KeyRange = Range(Target.Address) Range("A1:C8").Sort Key1:=KeyRange, Header:=xlYes End If End Sub 

In diesem Code haben wir die Ereignis BeforeDoubleClick zu deaktivieren Sie das übliche Doppel - anklicken. das heißt der Start der Bearbeitung Modus der Zelle. Wenn dieses Ereignis läuft, können wir doppelt - anklicken. auf einem der Spaltenüberschriften sortiert es die Spaltendaten in aufsteigende Reihenfolge .

Lesen Sie mehr: VBA zum Sortieren von Spalten in Excel (4 Methoden)

Ähnliche Lektüre:

  • Hinzufügen einer Sortierschaltfläche in Excel (7 Methoden)
  • Eindeutige Liste in Excel sortieren (10 nützliche Methoden)
  • Wie man die Sortierfunktion in Excel VBA verwendet (8 geeignete Beispiele)
  • Duplikate in Excel sortieren (Spalten und Zeilen)
  • Zufällige Sortierung in Excel (Formeln + VBA)

4. Sortieren von Spaltenbereichen anhand der Hintergrundfarbe mit Excel VBA

Wir können einen Bereich von Zellen in einer Spalte sortieren basiert über ihre Hintergrundfarbe Um dies zu tun, müssen wir hinzufügen. a Parameter namens SortOn die eine Wert xlSortOnCellColor Um die Sortierung zu demonstrieren, stellen wir zunächst verschiedene Hintergrundfarben zu den Zeilen unserer Datensatz .

Dann im Visual Basic Code Editor kopieren. den folgenden Code ein und drücken Sie F5 um es auszuführen.

 Sub SortRangeByBackgroundColor() ActiveWorkbook.Worksheets("background").Sort.SortFields.Add2 Key:=Range("B4"), _ SortOn:=xlSortOnCellColor, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("background").Sort .SetRange Range("B4:D10") .Apply End With End Sub 

Auf dem folgenden Screenshot sehen wir die sortierter Datensatz basierend auf ihrer Hintergrundfarbe.

Erläuterung:

  • In diesem Beispiel haben wir die Arbeitsblatt " Hintergrund "Im Code setzen wir also " Hintergrund " als unser Name des aktiven Arbeitsblatts.
  • Wir setzen B4 als die Schlüssel und B4:D10 als die Bereich Der Code sortiert die Daten anhand des Schlüssels.
  • Da wir nicht angegeben haben, welche Kopfparameter läuft der Code für den Standard keine Überschrift.
  • Wir setzen die Bestellung Parameter als aufsteigend, so dass die Daten von niedrigeren zu höheren Werten sortiert werden .

Lesen Sie mehr: Sortieren nach Farbe in Excel (4 Kriterien)

5. Anwenden von VBA-Code zum Sortieren eines Spaltenbereichs anhand der Schriftfarbe

Durch die Anwendung von VBA-Code können wir unseren Datensatz auf der Grundlage seiner Schriftfarbe Erstens: Wir müssen verschiedene Reihen einfärben um das Beispiel zu veranschaulichen.

Wenden Sie den nachstehenden Code an, um den Datensatz nach folgenden Kriterien zu sortieren Schriftfarbe.

 Sub SortRangeByFontColor() ActiveWorkbook.Worksheets("fontcolor").Sort.SortFields.Add(Range("B4"), _ xlSortOnFontColor, xlAscending, xlSortNormal).SortOnValue.Color = RGB(0, 0, 0) With ActiveWorkbook.Worksheets("fontcolor").Sort .SetRange Range("B4:D11") .Header = xlYes .Orientation = xlTopToBottom .Apply End With End Sub 

Erläuterung:

  • In diesem Beispiel haben wir die Arbeitsblatt " Schriftfarbe "Im Code setzen wir also " Schriftfarbe " als unser Name des aktiven Arbeitsblatts.
  • Wir setzen B4 als die Schlüssel und B4:D11 als die Bereich Der Code sortiert die Daten anhand des Schlüssels.
  • In diesem Beispiel haben wir auch den Header-Parameter als xlJa .
  • Hier setzen wir die Bestellung Parameter als aufsteigend, so dass die Daten von niedrigeren zu höheren Werten sortiert werden .
  • Der Wert der SortOn Parameter ist
  • Die Orientierungsparameter enthält den Wert xlTopToBottom da sie obligatorisch ist.
  • Farbe nach denen sortiert werden soll, sind RGB-Werte, die einen Wert von 0 zu 255 .

Lesen Sie mehr: Sortieren von zwei Spalten in Excel nach Übereinstimmung (sowohl exakte als auch partielle Übereinstimmung)

6. Ausrichtung des Sortierbereichs mit Excel VBA ändern

Die Verwendung des Orientierung können wir die Art und Weise, wie wir die Daten sortieren wollen, ändern. In diesem Beispiel haben wir transponiert unseren Datensatz zu sortieren es Horizontal .

Geben wir den folgenden Code in den Visual Basic-Editor ein und drücken Sie F5, um ihn auszuführen.

 Sub Orientation() Range("B4:H6").Sort Key1:=Range("B6"), _ Order1:=xlAscending, _ Orientation:=xlSortRows, _ Header:=xlYes End Sub 

Hier haben wir sortiert die Daten auf der Grundlage der Alterszeile in aufsteigend Bestellung von links zu rechts Im Code setzen wir die Orientierung Parameter als xlSortRows .

Verwandte Inhalte: Automatische Sortierung mehrerer Spalten in Excel (3 Möglichkeiten)

Dinge zum Merken

  • Die Parameter SortOn die wir benutzt haben, um sortieren Spaltenbereich basierend auf Hintergrundfarbe und Schriftfarbe kann nur von einem Arbeitsblatt-Objekt Wir können es nicht mit einer Bereichsobjekt .
  • Die Ereignis BeforeDoubleClick sortiert die Daten nur in aufsteigend.

Schlussfolgerung

Jetzt wissen wir, wie man Bereiche mit VBA in Excel sortiert. Hoffentlich ermutigt es Sie, diese Methode selbstbewusster einzusetzen. Wenn Sie Fragen oder Anregungen haben, vergessen Sie nicht, sie in das Kommentarfeld unten zu schreiben.

Hugh West ist ein äußerst erfahrener Excel-Trainer und -Analyst mit über 10 Jahren Erfahrung in der Branche. Er verfügt über einen Bachelor-Abschluss in Rechnungswesen und Finanzen sowie einen Master-Abschluss in Betriebswirtschaft. Hugh hat eine Leidenschaft für das Unterrichten und hat einen einzigartigen Lehransatz entwickelt, der leicht zu befolgen und zu verstehen ist. Seine Expertenkenntnisse in Excel haben Tausenden von Studenten und Berufstätigen auf der ganzen Welt geholfen, ihre Fähigkeiten zu verbessern und in ihrer Karriere herausragende Leistungen zu erbringen. Über seinen Blog teilt Hugh sein Wissen mit der Welt und bietet kostenlose Excel-Tutorials und Online-Schulungen an, um Einzelpersonen und Unternehmen dabei zu helfen, ihr volles Potenzial auszuschöpfen.