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

Forumthread: Datum aufsteigend sortieren vba

Datum aufsteigend sortieren vba
17.02.2019 14:13:58
Christian
Moin Freunde,
ich verzweifel hiere gerade ein wenig an VBA und daran, dass ich eine Spalte mit Werte die ich aus anderen Tabellenblätteren eingefügt habe, aufsteigend sortieren möchte.
1. Lasse ich über die Spalte F die Funktion "Text in Spalten"
    wsZiel.Range("F2:F" & lngLZeileQuelle).TextToColumns Destination:=wsZiel.Range("F2"),  _
DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True
2. Mit diesem Abschnitt lasse ich die Spalte in das Datumsformat "Datum Kurz" formatieren

lngLZeileZiel = wsZiel.Cells.Find("*", wsZiel.Range("A1"), xlFormulas, xlWhole, xlByRows,  _
xlPrevious).Row
For lngAktZeile = 2 To lngLZeileZiel
wsZiel.Range("F" & lngAktZeile).Value = DateValue(wsZiel.Range("F" & lngAktZeile).Value) _
wsZiel.Range("I" & lngAktZeile).Value = DateValue(wsZiel.Range("I" & lngAktZeile).Value) _
If Not IsError(wsZiel.Range("R" & lngAktZeile)) Then
wsZiel.Range("R" & lngAktZeile).Value = DateValue(wsZiel.Range("R" & lngAktZeile). _
Value)
End If
Next lngAktZeile
3. Und zum Schluss kommt die eigentliche Aufsteigend Sortierung.
    wsZiel.Activate
wsZiel.AutoFilter.Sort.SortFields.Clear
wsZiel.AutoFilter.Sort.SortFields.Add Key:= _
wsZiel.Range("F1:F" & lngLZeileZiel), SortOn:=xlSortOnValues, Order:=xlAscending,  _
DataOption:=xlSortNormal
With wsZiel.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Und als Resultat sehe ich leider nur, dass alle Befehle durchgeführt wurden sind, der Cursor auch auf der gewünschten Einstellung steht (siehe Screenshort), jedoch wird dieser Befehl nicht ausgeführt. Der Anwender muss manuell doch noch einmal auf die bereits ausgewählte Option klicken und erst dann, wird der Befehl "Aufsteigend" sortiert ausgewählt. Warum? Ich stehe mit meinen Latain am Ende und weiß nicht mehr weiter.
Userbild
Ich hoffe Ihr könnt meinen Problem folgend :)
Beste Grüße
Christian und vielen Dank für euren Support.
Anzeige

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datum aufsteigend sortieren vba
17.02.2019 14:25:01
onur
DataOption:= xlSortTextAsNumbers
AW: Datum aufsteigend sortieren vba
17.02.2019 14:30:38
Christian
Schade :/ Keine Veränderung
Userbild
AW: Datum aufsteigend sortieren vba
17.02.2019 14:52:37
onur
Wieso AUTOFILTER?
wsziel.Sort.SortFields.Clear
wsziel.Sort.SortFields.Add Key:=wsziel.Range("F1"), SortOn:=xlSortOnValues, Order:=xlDescending, _
_
DataOption:=xlSortTextAsNumbers
With wsziel.Sort
.SetRange Range("F1:F" & lngLZeileZiel)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

Anzeige
AW: Datum aufsteigend sortieren vba
17.02.2019 15:01:48
Christian
Der Makro reader schmeisst mir diesen Autofilter rein. Wobei die Tabelle bereits gefiltert ist.
AW: Datum aufsteigend sortieren vba
17.02.2019 15:06:49
onur
Du hast beim aufzeichnen mit dem Macro RECORDER statt "nach Datum sortieren" "benutzerdefiniertes Sortieren" genommen.
AW: Datum aufsteigend sortieren vba
17.02.2019 15:09:10
Christian
Also wenn ich denn recorder anschmeiße, die und oben in der Spalte auf Datum aufsteigend sortiere klicke, bekomme ich diese Codestruktur als Ergebniss:
Sub Makro5()
' Makro5 Makro
ActiveWorkbook.Worksheets("Open PO").AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Open PO").AutoFilter.Sort.SortFields.Add2 Key:= _
Range("F1:F9876"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _
:=xlSortNormal
With ActiveWorkbook.Worksheets("Open PO").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub

Anzeige
AW: Datum aufsteigend sortieren vba
17.02.2019 15:10:40
onur
Schmeiss mal den Autofilter raus und probiere noch masl.
AW: Datum aufsteigend sortieren vba
17.02.2019 15:13:50
onur
Du verwechselst Autofilter und Sortieren, was drunter liegt.
Das PopUp-Menü auf deiner Bildschirmkopie ist vom FILTERN und nicht vom SORTIEREN.
AW: Datum aufsteigend sortieren vba
17.02.2019 15:17:18
Christian
Auf "nach Datum sortieren" klicke ich? Indem ich oben denn Filter aktivere und dann auf Sortieren klicke.
Außerdem bringt das entfernen des Autofilter leider nichts :(
Anzeige
AW: Datum aufsteigend sortieren vba
17.02.2019 15:22:12
onur
Bereich markieren, Macrorecorder einschalten,auf "Sortieren und Filtern/benutzerdef. Sortieren" klicken
Userbild
ahhhh ;)
17.02.2019 15:27:39
Christian

Sub Makro6()
' Makro6 Makro
Cells.Select
Range("D1").Activate
ActiveWorkbook.Worksheets("Open PO").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Open PO").Sort.SortFields.Add2 Key:=Range( _
"F2:F9877"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Open PO").Sort
.SetRange Range("A1:T9877")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub

Anzeige
AW: Datum aufsteigend sortieren vba
17.02.2019 15:16:27
onur
Probiere einfach meinen Code aus.
AW: Datum aufsteigend sortieren vba
17.02.2019 15:17:01
onur
Probiere einfach meinen Code aus, NACHDEM du den Bereich erweitert hast.
AW: Datum aufsteigend sortieren vba
17.02.2019 14:59:07
onur
Du bist dir darüber im klaren, dass dein Code alle Deine Daten durcheinanderschmeisst, solange du als Range nur Spalte F nimmst?
Anzeige
AW: Datum aufsteigend sortieren vba
17.02.2019 15:01:18
Christian
Hmm also müsste ich als Range denn gesamten Bereich annehmen? Ich möchte ja denn gesamten Bereich in Abhängigkeit der Spalte F aufsteigend sortieren
AW: Datum aufsteigend sortieren vba
17.02.2019 15:04:39
onur
Du musst den gesamten Bereich nehmen, sonst bleiben alle anderen Werte gleich, nur F ändert sich.
Key:=wsziel.Range("F1") besagt ja schon, dass nach F sortiert werden muss.
Anzeige
Bin ab 18 Uhr wieder zuhause.
17.02.2019 15:22:40
Christian
Ich muss jetzt leider los aber dieses Problem möchte ich heute auf jeden Fall nochmal lösen. Das kann doch nicht so schwer sein, mit VBA eine Spalte mit eingefügten Werten aufsteigend zu sortieren.
AW: Bin ab 18 Uhr wieder zuhause.
17.02.2019 15:24:52
onur
Wenn man weiss, was "Sortieren" und was "Filtern" ist, ist das auch nicht schwer.
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Datum aufsteigend sortieren mit VBA in Excel


Schritt-für-Schritt-Anleitung

Um eine Excel-Tabelle nach Datum aufsteigend zu sortieren, kannst du den folgenden VBA-Code verwenden. Dieser Code geht davon aus, dass die Daten in Spalte F stehen.

  1. Text in Spalten umwandeln: Zuerst musst du sicherstellen, dass die Daten im richtigen Format vorliegen. Verwende den folgenden Code, um die Daten in Spalte F zu bearbeiten:

    wsZiel.Range("F2:F" & lngLZeileQuelle).TextToColumns Destination:=wsZiel.Range("F2"), _
    DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
    Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
    :=Array(1, 1), TrailingMinusNumbers:=True
  2. Datumsformat einstellen: Verwende den folgenden Code, um die Daten in Spalte F ins Datumsformat zu konvertieren:

    lngLZeileZiel = wsZiel.Cells.Find("*", wsZiel.Range("A1"), xlFormulas, xlWhole, xlByRows, xlPrevious).Row
    For lngAktZeile = 2 To lngLZeileZiel
       wsZiel.Range("F" & lngAktZeile).Value = DateValue(wsZiel.Range("F" & lngAktZeile).Value)
    Next lngAktZeile
  3. Aufsteigend sortieren: Führe den folgenden Code aus, um die Tabelle nach Datum aufsteigend zu sortieren:

    wsZiel.Sort.SortFields.Clear
    wsZiel.Sort.SortFields.Add Key:=wsZiel.Range("F1:F" & lngLZeileZiel), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With wsZiel.Sort
       .SetRange Range("A1:T" & lngLZeileZiel)
       .Header = xlYes
       .MatchCase = False
       .Orientation = xlTopToBottom
       .SortMethod = xlPinYin
       .Apply
    End With

Häufige Fehler und Lösungen

  • Autofilter-Probleme: Wenn der Autofilter aktiv ist und du versuchst, die Daten zu sortieren, kann dies zu unerwartetem Verhalten führen. Stelle sicher, dass der Autofilter entfernt ist, bevor du die Sortierung anwendest.

  • Falsches Sortieren: Wenn du nur die Spalte F angibst, sortierst du eventuell nicht die gesamte Tabelle. Achte darauf, dass du den gesamten Bereich angibst, z.B. Range("A1:T" & lngLZeileZiel).

  • Datum nicht erkannt: Wenn Excel das Datum nicht richtig erkennt, kann es helfen, die Daten zuerst in das Datumsformat zu konvertieren, bevor du die Sortierung anwendest.


Alternative Methoden

Du kannst auch die integrierte Excel-Funktion zum Sortieren verwenden:

  1. Markiere die gesamte Tabelle.
  2. Gehe zu „Daten“ > „Sortieren“.
  3. Wähle die Spalte mit den Datumsangaben und stelle sicher, dass du „Aufsteigend“ wählst.

Praktische Beispiele

Hier ist ein einfaches Beispiel, um ein Datum aufsteigend in Excel zu sortieren. Angenommen, du hast eine Liste von Bestelldaten in Spalte F, die du sortieren möchtest. Stelle sicher, dass alle Daten im Datumsformat vorliegen und folge der oben beschriebenen Schritt-für-Schritt-Anleitung.

Sub SortiereDaten()
    ' Beispiel VBA Code zum Sortieren nach Datum
    Dim wsZiel As Worksheet
    Set wsZiel = ThisWorkbook.Worksheets("DeinBlattName")

    ' Sortiere die Tabelle nach Datum in Spalte F
    Call Schritt_fuer_Schritt_Anleitung
End Sub

Tipps für Profis

  • Makros verwenden: Wenn du oft Daten nach Datum sortierst, kannst du ein Makro aufzeichnen und anpassen, um diesen Prozess zu automatisieren.

  • Datenvalidierung: Stelle sicher, dass die Daten in der Spalte F tatsächlich Datumswerte sind. Nutze die Datenvalidierung in Excel, um sicherzustellen, dass nur gültige Daten eingegeben werden.

  • Fehlerprotokollierung: Füge Fehlerbehandlungsroutinen in deinen VBA-Code ein, um Probleme beim Sortieren zu identifizieren und zu beheben.


FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass meine Daten im Datumsformat sind? Überprüfe, ob die Zellen in Spalte F das Datumsformat haben. Du kannst dies unter „Start“ > „Zahlenformat“ in Excel einstellen.

2. Warum funktioniert der Sortierbefehl nicht? Das kann passieren, wenn der Autofilter aktiv ist oder wenn die Zellen nicht im Datumsformat sind. Stelle sicher, dass du den Autofilter entfernst und die Daten korrekt formatiert sind.

3. Kann ich die Sortierung automatisch durchführen? Ja, du kannst VBA verwenden, um die Sortierung automatisch durchzuführen, sobald die Daten eingefügt werden. Füge den Code in das Worksheet-Change-Ereignis ein, um dies zu erreichen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige