2016-04-13 17 views
1

Ich habe eine generierte Datei von einem System stammt das Datum Format dieser Datei ist wie folgt Mar 28 2016 4:55:54:380PM mein Skript in VBA erkennt dies nicht als Datum oder eher Excel doesn Erkenne das nicht als Datumsformat, sondern nur als Zeichenfolge. Gibt es anders herum?Datumsinformationen in einem Format Excel erkennt nicht als Datum

+0

wollen Sie das Datum und die Uhrzeit oder Datum brauchen? –

+0

Ich brauche nur das Datum .. – 7A65726F

Antwort

1

Sie in einem Kommentar erwähnt, dass Sie nur das Datum brauchen:

Sub dateTest() 
    Dim d As Date 
    s = "Mar 28 2016 4:55:54:380PM" 
    s = Left(s, 11) 
    d = DateSerial(Year(s), Month(s), Day(s)) 
    Debug.Print d 
End Sub 

28.03.2016

Um etwas Dataset iterieren:

Sub dateIteration() 
    Dim d As Date, v As Variant 
    Dim rng As Range 

    Set rng = Range("A1:A10") 

    For Each r In rng 
     v = Left(r.Value, 11) 
     d = DateSerial(Year(v), Month(v), Day(v)) 

     ' Do something with d 
     ' Print it to worksheet, maybe? 
     r.Value = d 
    Next r 
End Sub 

iterieren nicht zusammenhängende Bereiche mit minimalem Code Krempel:

Sub helperSub() 
    Call dateIteration(Range("A1:A10")) 
    Call dateIteration(Range("Z1:Z10")) 
    Call dateIteration(Range("H1:M89")) 
End Sub 

Sub dateIteration(rng As Range) 
    Dim d As Date, v As Variant 

    For Each r In rng 
     v = Left(r.Value, 11) 
     d = DateSerial(Year(v), Month(v), Day(v)) 

     ' Do something with d 
     ' Print it to worksheet, maybe? 
     r.Value = d 
    Next r 
End Sub 
+0

yap :), aber ich habe 20k Daten mit Daten wie das ... – 7A65726F

+0

Wenn die Syntax ist die gleiche, Sie kann über die Daten iterieren und den gleichen Algorithmus anwenden. – Vegard

+0

haha ​​Ich arbeite daran iterate aber anw, danke :) – 7A65726F

0

Ist das Datumsformat nicht in VBA # MM/TT/JJJJ h: mm: ss.sss PM #?

+0

Yap, deshalb habe ich ein Problem mit diesem .. – 7A65726F

1

versuchen diese

Public Function stringtodate(mytext) As Date 
    str1 = Split(mytext, " ") 
    str2 = UBound(str1) 
    If str2 > 2 Then 
     If LCase(Left(str1(0), 3)) = "mar" Then 
      mon = "03" 
     End If 
     stringtodate = str1(1) & "-" & mon & "-" & str1(2) 
    Else 
     'not a valid date 
    End If 
End Function 

enter image description here

2

Hier ist ein 2-Leitungscode;)

Ich gehe davon aus, dass die Bereich ist von A1:A20. Bitte ändern geltenden

Sub Sample() 
    [A1:A20].NumberFormat = "DD/MM/YYYY" 
    [A1:A20] = [index(DATE(MID(A1:A20,8,4),MONTH(1&LEFT(A1:A20,3)),MID(A1:A20,5,2)),)] 
End Sub 

enter image description here

Wenn Sie verstehen wollen, was dieser Code dann die Erklärung sieht, die ich gegeben habe Here

+0

Danke, ich werde auch versuchen, dies :) – 7A65726F

+0

Nur die Reihenfolge des Codes geändert –