Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1652to1656
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Datum bereinigen

Datum bereinigen
26.10.2018 12:50:37
Axel
Hallo zusammen,
ich habe in einem Workbook eine Menge (355 oder so) Arbeitsblätter. In der ersten Spalte des Arbeitsblattes ab der dritten Zeile steht ein Datum, was aber nicht immer als Datum erkannt wird.
In jeder Tabelle habe ich nämlich dann Ausreißer wie:
6-Mar-2018
5-Dec-2017
...
Mein Plan ist, zu schauen, ob in einer Zelle ein Datum drin steht, wenn nicht, den "String" auseinanderzuschneiden und als ein Datum wiederzusammenzusetzen.
Wie ich alle Tabellenblätter durchgehe, weiß ich bereits:
Dim WsTab As Worksheet
Dim lRow as Long
Dim i as Integer
For each WsTab in Sheets
lRow= ActiveSheet.Cells(Rows.Count,1).End(xlup).Row
For i = 3 to lRow

Nun habe ich aber keine Ideen, wie ich am besten das Datum überprüfe und dann ggf. den String in ein Datum umformatiere.
Hat hier jemand Ideen?
For ech

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

Betreff
Datum
Anwender
Anzeige
AW: Datum bereinigen
26.10.2018 13:10:42
Peter(silie)
Hallo,
selektiere die gesamte spalte, wende das Datums format auf die Spalte an.
Jetzt wie folgt:
Daten -> Text in Spalte -> Getrennte Werte-> Alle Trennzeichen abwählen ->Fertigstellen
Nun sollte das richtige Datumsformat auf alle Zeilen dieser Spalte angewand sein.
AW: Datum bereinigen
26.10.2018 13:23:24
Axel
Danke für deine Rückmeldung
Das hat leider nicht funktioniert. Die Daten in dieser Schreibweise 8-Mar-2016 werden leider nicht erkannt.
Da ich auch wirklich viele Tabellenblätter durcharbeiten muss, suche ich ne VBA-Lösung.
AW: Datum bereinigen
26.10.2018 13:25:41
Rudi
Hallo,
Sub aaa()
Dim t, vArr
Dim WsTab As Worksheet
Dim lRow As Long
Dim i As Integer
For Each WsTab In Worksheets
With WsTab
lRow = .Cells(Rows.Count, 1).End(xlUp).Row
vArr = .Range(.Cells(3, 1), .Cells(lRow, 1))
For i = 1 To UBound(vArr)
If Not (IsDate(vArr(i, 1))) Then
t = Split(vArr(i, 1), "-")
t(1) = WorksheetFunction.Search(t(1), "  janfebmaraprmayjunjulaugsepoctnovdec") / 3
vArr(i, 1) = DateSerial(t(2), t(1), t(0))
End If
Next i
.Cells(3, 1).Resize(UBound(vArr)) = vArr
End With
Next WsTab
End Sub

Gruß
Rudi
Anzeige
AW: Datum bereinigen
26.10.2018 13:47:57
UweD
Hallo
hier auch noch eine Lösung..
Sub Makro1()
    Dim WsTab As Worksheet
    Dim iSp As Integer, WF
    
    iSp = 1 'Spalte mit Datum 
    Set WF = WorksheetFunction
    
    For Each WsTab In Sheets
    
        With WsTab
            'Sind überhaupt Texte in Spalte A? 
            If WF.CountA(.Columns(iSp)) - WF.Count(.Columns(iSp)) <> 0 Then
                'nur die Textzellen 
                With .Columns(iSp).SpecialCells(xlCellTypeConstants, 2)
                    'Ersetzen 
                    .Replace What:="-Mar-", Replacement:="-Mär-", LookAt:=xlPart, _
                    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
                    ReplaceFormat:=False
                
                    .Replace What:="-Dec-", Replacement:="-Dez-", LookAt:=xlPart, _
                    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
                    ReplaceFormat:=False
                End With
            End If
        End With
    Next
End Sub

LG UweD
Anzeige
AW: Datum bereinigen
26.10.2018 13:56:04
Axel
Vielen Dank! Ich guck mir das im Laufe des Tages an.
Schönes Wochenende
AW: Datum bereinigen - von Hand
26.10.2018 16:03:10
Hand
Hi
öffne die Menüfunktion SUCHEN/ERSETZEN
wähle dort in den Optionen "Durchuchen - Arbeitsmappe"
dann musst du nicht jedes Blatt einzeln bearbeiten, sondern Excel führt die Aktion in allen Blättern der Mappe mit dem selektierten Zellbereich durch.
ersetze jetzt von Hand das "-" durch "-"
klingt widersinnig ,aber beim Ersetzen prüft Excel erneut, ob der Wert in der Zelle eine Zahl, ein Datum oder eine Formel sein könnte und wandelt dann alle Texte die der deutschen Schreibweise nach ein Datum sein könnten in ein solches um.
gehe jetzt in den VBA-Editor ins Direktfenster und gib dort den Befehl: Replace "-", "-", xlpart ein
damit führst du das Ersetzen per VBA durch und dann wird für Umwandlung in Zahl/Datum/Formel nicht mehr die Lokale Schreibweise, sondern unabhängig deiner Ländereinstellung die amerikanische Schreibweise verwendet, dh es werden alle Texte in ein Datum gewandelt, die der amerikanischen Schreibweise nach ein Datum sein können.
Wenn die Datumwerte, bei denen deutsche und amerikanische Schreibweise gleich sind schon vollständig als Datum vorliegen, kannst du dir den zweiten Schritt auch sparen.
die Option "Durchsuchen - Arbeitsmappe" musst du aber von Hand setzen, da du diese per Makro nicht ausgewähtl werden kann.
(für ein Marko müsstest du dann eine Schleife über alle Blätter erstellen um dann im Blatt das ersetzen durchführen zu können)
Gruß Daniel
Anzeige
AW: Datum bereinigen
27.10.2018 13:16:56
Axel
Vielen Dank an alle für die hilfreichen Infos und Hinweise.
Mit Suchen / Ersetzen von -Mar- usw hat das super funktioniert.
Die Codetipps werde ich jetzt noch für andere Bearbeitungsschritte verwenden. Vielen Dank!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige