Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Datum sortieren VBA

Datum sortieren VBA
08.02.2019 14:19:45
Torsten
Hallo zusammen,
ich versuche mit VBA eine Spalte mit Datum zu sortieren. Dazu formatiere ich die Spalte zuerst, um sicher zu gehen, dass es auch Datumsformat hat. Das funktioniert. Wenn ich nach dem Formatieren schaue, haben die Zellen Format Datum.
Jetzt will ich die Spalte nach Datum aufsteigend sortieren mit
With ThisWorkbook.Sheets("Sheet1")
.Visible = True
.Activate
.Columns("A:P").AutoFit
X = .Range("A" & Rows.Count).End(xlUp).Row
strRange = "A1:P" & X
strColumn = "I"
.Range(strRange).Sort Key1:=Range(strColumn & "1"), Order1:=xlAscending, Header:=xlNo
.Visible = False
End With
Das Problem ist, dass er mir nur nach dem Tag sortiert, aber nicht nach dem gesamten Datum.
Also Beispiel:
aus
28/02/2019
29/01/2019
25/01/2019
25/01/2019
wird
24/01/2019
25/01/2019
28/02/2019
29/01/2019
und nicht
24/01/2019
25/01/2019
29/01/2019
28/02/2019
Wenn ich mit der Sortierfunktion im Tabellenblatt sortiere, wird alles richtig sortiert. Was habe ich im Code vergessen?
Vielen Dank fuer eure Hilfe.
Gruss Torsten
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Datum sortieren VBA
08.02.2019 14:44:58
Piet
Hallo Torsten
ich habe mal eine ganz blööde Frage: - steht das Datum in Spalte "I" oder ist das ein anderer Wert? - (der rein zufaellig passt?)
Bei mir habe ich den Code getestet, da ist die Sortierung richtig. Aber mein Format ist nicht 25/01/2019 sondern 25.01.2019
Könnte es vielleicht am Format liegen? Was passiert wenn du das Format aenderst?
mfg Piet
Anzeige
AW: Datum sortieren VBA
08.02.2019 14:52:30
Torsten
Hallo Piet,
danke fuer deine Antwort. Ich glaube nicht, dass es am Format liegt. Wir haben hier UK Einstelungen.
Liegt wohl an der Sortiermethode.
Habe aber den Code jetzt umgebastelt mit Hilfe aus dem Web und jetzt klappts:
With ThisWorkbook.Sheets("Sheet1")
.Visible = True
.Activate
.Columns("A:P").AutoFit
X = .Range("A" & Rows.Count).End(xlUp).Row
.Sort.SortFields.Clear
.Sort.SortFields.Add2 Key:=Range("I1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortTextAsNumbers
With .Sort
.SetRange Range("A1:P" & X)
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End With
Schoenes WE
Anzeige
;
Anzeige

Infobox / Tutorial

Datum sortieren mit VBA in Excel


Schritt-für-Schritt-Anleitung

Um eine Spalte mit Datum in Excel mithilfe von VBA korrekt aufsteigend zu sortieren, kannst du die folgende Schritt-für-Schritt-Anleitung befolgen:

  1. Öffne die Excel-Datei und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul ein, indem du im Menü auf Einfügen und dann auf Modul klickst.

  3. Kopiere den folgenden Code in das Modul:

    With ThisWorkbook.Sheets("Sheet1")
       .Visible = True
       .Activate
       .Columns("A:P").AutoFit
       X = .Range("A" & Rows.Count).End(xlUp).Row
       .Sort.SortFields.Clear
       .Sort.SortFields.Add2 Key:=Range("I1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
       xlSortTextAsNumbers
       With .Sort
           .SetRange Range("A1:P" & X)
           .Header = xlNo
           .MatchCase = False
           .Orientation = xlTopToBottom
           .SortMethod = xlPinYin
           .Apply
       End With
       .Visible = False
    End With
  4. Ersetze "Sheet1" durch den Namen deines Arbeitsblatts, falls nötig.

  5. Führe den Code aus, indem du auf F5 drückst oder Run im Menü wählst.


Häufige Fehler und Lösungen

  • Datum wird nicht korrekt sortiert: Stelle sicher, dass die Daten in der Spalte "I" tatsächlich im Datumsformat vorliegen und nicht als Text gespeichert sind. Manchmal kann das Format (z.B. 25/01/2019 vs. 25.01.2019) das Sortierergebnis beeinflussen.

  • Sortiermethode nicht definiert: Wenn du die ursprüngliche Methode benutzt hast, überprüfe, ob die .Sort.SortFields.Add2-Methode korrekt implementiert ist, wie im oben genannten Beispiel.


Alternative Methoden

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

  1. Markiere den Bereich, den du sortieren möchtest.
  2. Klicke auf die Registerkarte Daten.
  3. Wähle Sortieren und dann die Spalte, nach der du sortieren möchtest.
  4. Stelle sicher, dass du die Option für Aufsteigend auswählst und bestätige.

Praktische Beispiele

Hier sind einige Beispiele für das Sortieren von Datumsangaben:

  • Beispiel 1: Angenommen, du hast folgende Daten in Spalte "I":

    28/02/2019
    29/01/2019
    25/01/2019

    Nach dem Ausführen des VBA-Codes solltest du folgende Reihenfolge erhalten:

    25/01/2019
    29/01/2019
    28/02/2019
  • Beispiel 2: Wenn die Daten in unterschiedlichem Format vorliegen, teste die Sortierung nach Umwandlung in ein einheitliches Datumsformat.


Tipps für Profis

  • Überprüfe immer das Format der Zellen, bevor du mit der Sortierung beginnst. Excel kann Datumsangaben als Text interpretieren, was zu unerwarteten Ergebnissen führen kann.
  • Verwende die Funktion DataOption:=xlSortTextAsNumbers, um sicherzustellen, dass Excel die Daten als Zahlen behandelt und nicht als Text.

FAQ: Häufige Fragen

1. Was kann ich tun, wenn die Datumsangaben nicht korrekt sortiert werden?
Überprüfe, ob die Daten in der Spalte im richtigen Datumsformat vorliegen. Manchmal wird das Datum als Text gespeichert, was die Sortierung beeinflussen kann.

2. Kann ich das Datum auch in absteigender Reihenfolge sortieren?
Ja, du kannst den Parameter Order:=xlDescending in der .Sort.SortFields.Add2-Methode ändern, um die Daten absteigend zu sortieren.

3. Welche Excel-Version benötige ich für diesen VBA-Code?
Der Code sollte in den meisten modernen Excel-Versionen (ab Excel 2007) funktionieren. Achte darauf, dass du die richtige VBA-Syntax verwendest.

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