Excel-VBA - Datums-Format-Konvertierung

Ich haben eine herausfordernde Aufgabe, die ich nicht imstande bin zu lösen mit vielen workarounds.

In einer Spalte habe ich Daten, das Datum kann in folgenden drei Formaten:

1) Einfaches dd/mm/yy

2) TT/mm/JJ aber können die Worte "vor,nach oder" um ihn herum. Jeder
einer davon, und wir brauchen nur diese Worte zu löschen in diesem Fall.

3) Datum in einem numerischen format. Eine lange dezimal-Werte, wie 1382923.2323
aber eigentlich kann ich ein Datum von es nach der Konvertierung.

Die Datei hier hochgeladen. Date_format_macro_link

Schrieb ich folgenden code, aber es ' s falsche Ergebnisse.

Sub FormatDates_Mine()
    ManualSheet.Activate
    ManualSheet.Cells.Hyperlinks.Delete
    ManualSheet.Cells.Interior.ColorIndex = xlNone
    ManualSheet.Cells.Font.Color = RGB(0, 0, 0)

    lastRow = ManualSheet.Range("A" & Rows.Count).End(xlUp).Row
    Col = "A"
    For i = 2 To lastRow
        Cells(i, Col) = Trim(Replace(Cells(i, Col), vbLf, "", 1, , vbTextCompare))

        If InStr(1, Cells(i, Col), "about", vbTextCompare) <> 0 Then
            Cells(i, Col) = Trim(Replace(Cells(i, Col), "about", "", 1, , vbTextCompare))
            Cells(i, Col).Interior.Color = RGB(217, 151, 149)
        End If

        If InStr(1, Cells(i, Col), "after", vbTextCompare) <> 0 Then
            Cells(i, Col) = Trim(Replace(Cells(i, Col), "after", "", 1, , vbTextCompare))
            Cells(i, Col).Interior.Color = RGB(228, 109, 10)
        End If

        If InStr(1, Cells(i, Col), "before", vbTextCompare) <> 0 Then
            Cells(i, Col) = Trim(Replace(Cells(i, Col), "before", "", 1, , vbTextCompare))
            Cells(i, Col).Interior.Color = RGB(228, 109, 10)
        End If

        DateParts = Split(Cells(i, Col), "/", , vbTextCompare)

        Cells(i, Col) = Format(Cells(i, Col), "dd/mm/yyyy")
    Next i

    Range("D:E").HorizontalAlignment = xlCenter
End Sub

Die Datei hier hochgeladen. Date_format_macro_link

Bitte um Hilfe!!

Sie haben erwähnt, wie deine Daten Aussehen, aber Sie haben nicht erwähnt, was Sie tun möchten, zu tun. Zum Beispiel, was passiert About 21/05/09 ? Aus deinem code sieht es aus wie Sie wollen, entfernen Sie alle unerwünschten chars und verwandeln Sie es in ein Datum?
Es gibt einige Werte in Ihren Daten, die nicht erfüllt data type Kriterien. Weglassen, das problem könnte man so etwas wie If IsDate(Cells(i, Col)) Then bevor Sie .Format Eigenschaft. Für andere Probleme, siehe @SiddharthRout Kommentar...
Ich denke, Sie tun konnte, dass mit nur einem Arbeitsblatt Formel...und legen die Farbe durch Bedingte Formatierung

InformationsquelleAutor Tejas | 2013-04-10

Schreibe einen Kommentar