Umwandlung von Text in Datum im bestimmten Format (yyyy/mm)

  • Excel

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    Umwandlung von Text in Datum im bestimmten Format (yyyy/mm)

    Hallo zusammen,

    ich bin in VBA Anfängerin und brauche Hilfe. Ich habe eine ExcelDatei mit einem großen Datensatz. In der in Spalte A stehen über 10000 Zeilen Datum im Textformat (Bsp 2020/12). Nun würde ich gern den Text der ganzen Spalte in ein Datumsformat mit VBA umwandeln.

    Hintergrund ist, in der Spalte A stehen Daten für 24 Monate (Text: 2020/12 - 2022/12). Wenn ich neue Daten einfüge (Bsp. 2023/01), sollen die alten (2020/12) rausfliegen, so dass in der Datei nur Daten für 24 Monate bleiben.

    Vielen herzlichen Dank vorab. :)

    Viele Grüße

    maylee

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „maylee“ ()

    Was steht denn genau ein der Spalte A? Ein Datum oder eine Monatsbezeichnung?

    Wie würdest Du denn die Tabelle manuell aufräumen? Dies sind dann auch die Schritte, die Du im Code ahben musst.
    Ggf. zeichne doch mal auf, was Du manuell machen würdest. Dann siehst Du schon einmal in welche Richtung der Code gehen soll.
    NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).
    Hallo INOPIAE,

    vielen Dank für deine Rückmeldung. :) Es sieht folgendermaßen aus:

    A2: 2020/12
    A3: 2020/12
    usw.
    A100: 2021/01
    A300: 2021/01
    usw.
    A600: 2021/02
    A900: 2021/02
    usw.


    Diese Werte sind im Textformat. Ich brauche die im Datumsformat.
    Manuell würde ich, sobald ich die Daten von 2022/12 hochgeladen habe einfach die Zeilen mit dem Datum 2020/12 löschen. Habe ich bisher auch gemacht, aber per VBA müsste das doch einfacher gehen (per Buttonklick).

    Also wenn Daten für den neuen Monat hochgeladen werden. Datum aktuell minus 24 Monate. Der Rest soll gelöscht werden.
    Wie willst Du aus Jahr und Monat ein Datum machen? Ein Datum besteht immer aus Tag, Monat und Jahr.

    Mache doch aus dem Datum Deine Monatsangabe und suche danach.

    Visual Basic-Quellcode

    1. ​Dim Suche as String
    2. Suche = Format(Date, "YYYY / MM")


    Mache den Import der Daten nicht mit VBA sondern mit PowerQuery (Daten aus einem Ordner einfügen) und setze dort einen entsprechenden Filter bzw. sorge dafür, dass nur 24 Monatsdateien in dem Ordner liegen. Dann müsen die Daten nur noch aktualisiert werden.
    NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „INOPIAE“ ()

    Manueller Weg:

    Visual Basic-Quellcode

    1. Option Explicit
    2. Sub ConvertToDate()
    3. Dim c As Range
    4. For Each c In Intersect(UsedRange, Range("A:A"))
    5. If c.Value Like "####/##" Then
    6. c.Value = DateSerial(Left(c.Value, 4), Right(c.Value, 2), 1)
    7. End If
    8. Next
    9. End Sub
    10. Sub CleanupOldData()
    11. Dim r As Long
    12. For r = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
    13. If DateDiff("m", Cells(r, 1).Value, Date) > 23 Then Rows(r).Delete
    14. Next
    15. End Sub
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    maylee schrieb:

    IfDateDiff
    If DateDiff


    Oder hast du noch andere Daten in Spalte A stehen, die kein Datum repräsentieren?

    Visual Basic-Quellcode

    1. If IsDate(Cells(r, 1).Value) Then If DateDiff("m", Cells(r, 1).Value, Date) > 23 Then Rows(r).Delete
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --