Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA: automatisches Sortieren mit zwei Schlüsseln

VBA: automatisches Sortieren mit zwei Schlüsseln
04.10.2013 15:30:02
Wolfango
Hallo zusammen,
ich benutze nachstehenden VBA-Code.
Der Code macht auch das was er soll, nämlich ein vollautomatisches Sortieren nach Spalte A.
Nun benötige ich innerhalb des Codes einen zweiten Sortierschlüssel nach Spalte B (enthält Text). Wie muss ich den Code verändern, damit nach wie vor automatisch nach Spalte A und bei identischen Einträgen als 2. Kriterium nach Spalte C sortiert wird?
Gruß, Wo
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim RaBereich As Range, RaZelle As Range
Set RaBereich = Range("a2:g1000")
For Each RaZelle In Range(Target.Address)
If Not Intersect(Target, RaBereich) Is Nothing Then
Range("a1:g1000").Sort Key1:=Range("a2"), Order1:=xlDescending, _
Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
Exit For
End If
Next RaZelle
Set RaBereich = Nothing
End Sub

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: automatisches Sortieren mit zwei Schlüsseln
04.10.2013 16:42:55
KlausF
Hallo Wolfango,
Range("a1:g1000").Sort Key1:=Range("a2"), Order1:=xlDescending, _
Key2:=Range("b2"), Order2:=xlDescending, _
Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
sortiert nach Spalte B (Spalte C wäre demnach Key2:=Range("c2"), ...)
statt xlDescending evtl. xlAscending probieren
(Absteigend / Aufsteigend sortieren)
Gruß
Klaus

Anzeige
AW: VBA: automatisches Sortieren mit zwei Schlüsseln
04.10.2013 16:53:12
Wolfango
....funktioniert bestens!!!
Viiiiiiielen Dank!
Gruß,
Wo
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Automatisches Sortieren mit VBA nach mehreren Kriterien


Schritt-für-Schritt-Anleitung

Um ein automatisches Sortieren in Excel mit VBA nach mehreren Kriterien zu implementieren, kannst Du den folgenden Code verwenden. Dieser Code sortiert die Daten in einem festgelegten Bereich und berücksichtigt sowohl die erste als auch die zweite Sortierung:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim RaBereich As Range, RaZelle As Range
    Set RaBereich = Range("a2:g1000")
    For Each RaZelle In Range(Target.Address)
        If Not Intersect(Target, RaBereich) Is Nothing Then
            Range("a1:g1000").Sort Key1:=Range("a2"), Order1:=xlDescending, _
                                   Key2:=Range("b2"), Order2:=xlDescending, _
                                   Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _
                                   Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
            Exit For
        End If
    Next RaZelle
    Set RaBereich = Nothing
End Sub

In diesem Code wird zuerst nach Spalte A sortiert. Bei identischen Einträgen wird dann nach Spalte B weiter sortiert. Du kannst die Sortierreihenfolge von xlDescending (absteigend) auf xlAscending (aufsteigend) ändern, je nach Bedarf.


Häufige Fehler und Lösungen

Problem: Der Code sortiert nicht korrekt.
Lösung: Überprüfe, ob der Bereich Range("a2:g1000") korrekt definiert ist und ob die Zellen die richtigen Datentypen enthalten.

Problem: Die Sortierung geschieht nicht automatisch.
Lösung: Stelle sicher, dass das Worksheet-Change-Ereignis korrekt aktiviert ist. Der Code muss im entsprechenden Arbeitsblatt-Modul eingefügt werden.


Alternative Methoden

Falls Du eine andere Methode bevorzugst, kannst Du auch die Excel-Funktion "Sortieren" verwenden, um manuell nach mehreren Kriterien zu sortieren. Hierbei kannst Du die Sortieroptionen im Menü "Daten" nutzen.

  1. Markiere den gewünschten Datenbereich.
  2. Gehe zu "Daten" > "Sortieren".
  3. Füge die Sortierkriterien hinzu, indem Du die Spalten auswählst und die Reihenfolge definierst.

Praktische Beispiele

Ein praktisches Beispiel für das Sortieren in Excel nach zwei Kriterien könnte eine Tabelle sein, in der Du Kunden nach Nachnamen (Spalte A) und Vornamen (Spalte B) sortieren möchtest. Mit dem oben beschriebenen VBA-Code kannst Du sicherstellen, dass die Daten bei Änderungen automatisch aktualisiert werden.


Tipps für Profis

  • Nutze die .Sort-Methode in VBA, um komplexe Sortierungen schnell und effizient durchzuführen.
  • Wenn Du mit mehreren Spalten arbeitest, kann es hilfreich sein, die Sortierreihenfolge in Variablen zu speichern, um den Code übersichtlicher zu gestalten.
  • Teste den Code zuerst in einer Kopie Deiner Arbeitsmappe, um Datenverlust zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich den Sortierbereich anpassen?
Du kannst den Bereich in der Zeile Set RaBereich = Range("a2:g1000") einfach ändern, um mehr oder weniger Spalten oder Zeilen einzuschließen.

2. Ist es möglich, mehr als zwei Kriterien zu sortieren?
Ja, Du kannst zusätzliche Key-Parameter in der .Sort-Methode hinzufügen, um nach weiteren Spalten zu sortieren.

3. Funktioniert dieser Code in allen Excel-Versionen?
Der Code funktioniert in den meisten modernen Excel-Versionen, die VBA unterstützen, wie Excel 2010 und höher.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige