Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.10.2025 10:28:49
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Tabelle sortieren mehrere Kriterien

Tabelle sortieren mehrere Kriterien
13.08.2021 00:11:55
Andreas
Hallo,
wie kann ich beim Verlassen eines Userforms eine Tabelle nach folgenden Kriterien sortieren?
Name Blatt Tabelle1
In Zeile 4 befindet sich die Überschrift, die Datenzeilen beginnen ab Zeile 5. Folgender Aufbau Spalte 4: Datum; Spalte 5 eine Tageszeit als Name (Morgens, Mittags, Abends); Spalte 3 Zahlen zwischen 1-10.
Er soll nun per VBA zuerst alle zusammenhängenden Datenzeilen nach dem Datum in Spalte 4 sortieren (01.01.2021, 02.01.2021, usw) danach nach der Spalte 5 nach Tageszeit. Erst Morgens, dann Mittags, dann abends - und zuletzt nach Spalte 3 die Zahlenwerte von 1-10 aufsteigend.
Ist das irgendwie realisierbar?
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabelle sortieren mehrere Kriterien
13.08.2021 08:56:47
Werner
Hallo,
sortier nach deinen Wünschen "von Hand" und zeichne das mit dem Makrorekorder auf.
Gruß Werner
AW: Tabelle sortieren mehrere Kriterien
13.08.2021 21:57:49
Andreas
Dies kam dabei raus.
Sieht mir aber irgendwie sehr durcheinander aus. Kann man das auch so gestalten, dass er das ganze macht, wenn man die Tabelle gar nicht sieht - diese also ausgeblendet ist?

Sub Makro1()
' Makro1 Makro
ActiveWorkbook.Worksheets("Tagesnachweise").ListObjects("Tabelle2").Sort. _
SortFields.Clear
ActiveWorkbook.Worksheets("Tagesnachweise").ListObjects("Tabelle2").Sort. _
SortFields.Add2 Key:=Range("Tabelle2[Datum]"), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Tagesnachweise").ListObjects("Tabelle2").Sort. _
SortFields.Add2 Key:=Range("Tabelle2[Schicht]"), SortOn:=xlSortOnValues, _
Order:=xlAscending, CustomOrder:= _
"Frühdienst,Spätdienst,Nachtdienst,Zusatzdienst 1,Zusatzdienst 2", DataOption _
:=xlSortNormal
ActiveWorkbook.Worksheets("Tagesnachweise").ListObjects("Tabelle2").Sort. _
SortFields.Add2 Key:=Range("Tabelle2[Nr]"), SortOn:=xlSortOnValues, Order _
:=xlAscending, DataOption:=xlSortTextAsNumbers
With ActiveWorkbook.Worksheets("Tagesnachweise").ListObjects("Tabelle2").Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub

Anzeige
AW: Tabelle sortieren mehrere Kriterien
13.08.2021 23:19:51
Werner
Hallo,
eingekürzt.

Sub Makro1()
With Worksheets("Tagesnachweise").ListObjects("Tabelle2").Sort
.SortFields.Clear
.SortFields.Add Key:=Range("Tabelle2[Datum]"), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortNormal
.SortFields.Add Key:=Range("Tabelle2[Schicht]"), SortOn:=xlSortOnValues, _
Order:=xlAscending, CustomOrder:="Frühdienst,Spätdienst,Nachtdienst," _
& "Zusatzdienst 1,Zusatzdienst 2", DataOption:=xlSortNormal
.SortFields.Add Key:=Range("Tabelle2[Nr]"), SortOn:=xlSortOnValues, Order _
:=xlAscending, DataOption:=xlSortTextAsNumbers
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.Apply
End With
End Sub
Und wer sagt, dass die Tabelle eingeblendet sein muss?
Gruß Werner
Anzeige
AW: Tabelle sortieren mehrere Kriterien
13.08.2021 23:23:36
Yal
Hallo Andreas,
würde es so besser aussehen?

Sub Makro1()
Const CustOrd = "Frühdienst,Spätdienst,Nachtdienst,Zusatzdienst 1,Zusatzdienst 2"
With ActiveWorkbook.Worksheets("Tagesnachweise").ListObjects("Tabelle2").Sort
.SortFields.Clear
.SortFields.Add2 Key:=Range("Tabelle2[Datum]"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.SortFields.Add2 Key:=Range("Tabelle2[Schicht]"), _
SortOn:=xlSortOnValues, Order:=xlAscending, _
CustomOrder:=CustOrd, DataOption:=xlSortNormal
.SortFields.Add2 Key:=Range("Tabelle2[Nr]"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortTextAsNumbers
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
Es ist genau denselben Code, nur von Wiederholung bereinigt und sauber indentiert.
CustomOrder-String ist als Konstant ausserhalb, anstatt in der Mitte versteckt.
Das Coding kann natürlich auch auf eine versteckten Blatt wirken.
VG
Yal
Anzeige
AW: Tabelle sortieren mehrere Kriterien
13.08.2021 23:37:21
Andreas
Super ihr beiden - vielen Dank, ja, so sieht das schon ordentlicher aus :)
Gerne u. Danke für die Rückmeldung. o.w.T.
14.08.2021 08:45:02
Werner
AW: Tabelle sortieren mehrere Kriterien
14.08.2021 12:15:38
Andreas
Super ihr beiden - vielen Dank, ja, so sieht das schon ordentlicher aus :)
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Tabelle sortieren nach mehreren Kriterien in Excel VBA


Schritt-für-Schritt-Anleitung

Um eine Tabelle in Excel nach mehreren Kriterien zu sortieren, kannst Du VBA verwenden. Hier ist eine einfache Anleitung, um dies zu erreichen:

  1. Öffne den Visual Basic-Editor:

    • Drücke ALT + F11, um den Editor zu öffnen.
  2. Füge ein neues Modul hinzu:

    • Klicke mit der rechten Maustaste auf „VBAProject (DeineArbeitsmappe)“ und wähle „Einfügen“ > „Modul“.
  3. Gib den folgenden Code ein:

    Sub TabelleSortieren()
       With Worksheets("Tagesnachweise").ListObjects("Tabelle2").Sort
           .SortFields.Clear
           .SortFields.Add2 Key:=Range("Tabelle2[Datum]"), _
           SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
           .SortFields.Add2 Key:=Range("Tabelle2[Schicht]"), _
           SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:="Frühdienst,Spätdienst,Nachtdienst,Zusatzdienst 1,Zusatzdienst 2", DataOption:=xlSortNormal
           .SortFields.Add2 Key:=Range("Tabelle2[Nr]"), _
           SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortTextAsNumbers
           .Header = xlYes
           .MatchCase = False
           .Orientation = xlTopToBottom
           .SortMethod = xlPinYin
           .Apply
       End With
    End Sub

    Dieser Code sortiert die Tabelle nach dem Datum, der Tageszeit und den Zahlenwerten in aufsteigender Reihenfolge.

  4. Ausführen des Makros:

    • Schließe den Editor und kehre zu Excel zurück. Drücke ALT + F8, wähle „TabelleSortieren“ und klicke auf „Ausführen“.

Häufige Fehler und Lösungen

  • Fehler: „Objekt nicht gefunden“
    Lösung: Überprüfe, ob der Tabellenname und die Spaltenüberschriften korrekt sind. Möglicherweise stimmt der Name „Tabelle2“ nicht mit dem in Deiner Arbeitsmappe überein.

  • Fehler: Sortierung funktioniert nicht
    Lösung: Stelle sicher, dass die Daten in Deinen Spalten als Tabelle formatiert sind. Du kannst dies tun, indem Du die Daten auswählst und dann auf „Als Tabelle formatieren“ klickst.


Alternative Methoden

Falls Du nicht mit VBA arbeiten möchtest, kannst Du auch die Sortierfunktion in Excel verwenden:

  1. Wähle die gesamte Tabelle aus.
  2. Gehe zu „Daten“ > „Sortieren“.
  3. Füge die gewünschten Sortierkriterien hinzu, indem Du die Spalten auswählst und die Sortierreihenfolge festlegst.

Dies ist eine gute Methode, wenn Du nur einmalig sortieren möchtest.


Praktische Beispiele

Hier ist ein Beispiel, wie Du die Tabelle nach zwei Kriterien sortieren kannst:

Sub BeispielSortieren()
   With Worksheets("Tagesnachweise").ListObjects("Tabelle2").Sort
       .SortFields.Clear
       .SortFields.Add Key:=Range("Tabelle2[Datum]"), Order:=xlAscending
       .SortFields.Add Key:=Range("Tabelle2[Schicht]"), Order:=xlAscending
       .Apply
   End With
End Sub

In diesem Beispiel wird die Tabelle nur nach Datum und Schicht sortiert.


Tipps für Profis

  • Nutze .SortFields.Add2: Diese Methode ermöglicht eine flexiblere Handhabung der Sortierkriterien.
  • Verwende Konstanten: Definiere Deine benutzerdefinierten Sortierreihenfolgen als Konstanten, um den Code sauberer zu halten.
  • Testen: Probiere den Code in einer Testumgebung aus, bevor Du ihn in Deiner Hauptarbeitsmappe anwendest.

FAQ: Häufige Fragen

1. Wie kann ich die Tabelle sortieren, ohne sie anzuzeigen?
Du kannst die Tabelle im Hintergrund sortieren, indem Du sicherstellst, dass der Code in einem versteckten Blatt funktioniert.

2. Welche Excel-Version benötige ich für den VBA-Code?
Der bereitgestellte VBA-Code sollte in Excel 2010 und neueren Versionen funktionieren, da die .Add2 Methode in diesen Versionen unterstützt wird.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige