Supportnet / Forum / Tabellenkalkulation
Nach wie vor Makro gesucht um JJJJMMTT in TT.MM.JJJJ umzuwandeln
Frage
Hi @all,
ich beziehe mich auf einen bereits reingestellten Artikel.
Aus dem SAP erhalte ich ein Excelsheet mit nicht
Excel-konformen Datumswerten, z.B.
20010301 (01. März 2001)
20001121 (21. November 2000)
usw.
Mit dieser Funktion ist ein Umwandeln in TT.MM.JJ möglich:
=DATUM(LINKS(A1;4);TEIL(A1;5;2);RECHTS(A1;2))
Aber ich suche ein Makro, mit dem markierte Zell-Inhalte automatisch so umgewandelt werden.
Mit der Bitte um Hilfe.
Danke und Gruß,
Roice
Antwort 1 von sicci
Hallo Roice
versuchs mal mit folgendem Makro
(Beispiel bezieht sich auf Wertangaben in Spalte A)
Sub TextInDatumWandeln()
Dim x%
For x = 1 To Cells(Rows.Count, 1).End(xlUp).Row
Cells(x, 1) = Format(CDate(Right(Cells(x, 1), 2) & "." & _
Mid(Cells(x, 1), 5, 2) & "." & Left(Cells(x, 1), 4)), "dd.mm.yyyy")
Next
End Sub
Die Werte werden hier in den Zellen selbst ersetzt.
Willst Du das vermeiden, bzw. willst Du die Original-SAP-Daten gelistet behalten, dann ersetzte die Ergebnisspalte - im Beispiel hier also .. Cells(x,2) = Format(CDate ..
Gruß
sicci
versuchs mal mit folgendem Makro
(Beispiel bezieht sich auf Wertangaben in Spalte A)
Sub TextInDatumWandeln()
Dim x%
For x = 1 To Cells(Rows.Count, 1).End(xlUp).Row
Cells(x, 1) = Format(CDate(Right(Cells(x, 1), 2) & "." & _
Mid(Cells(x, 1), 5, 2) & "." & Left(Cells(x, 1), 4)), "dd.mm.yyyy")
Next
End Sub
Die Werte werden hier in den Zellen selbst ersetzt.
Willst Du das vermeiden, bzw. willst Du die Original-SAP-Daten gelistet behalten, dann ersetzte die Ergebnisspalte - im Beispiel hier also .. Cells(x,2) = Format(CDate ..
Gruß
sicci
Antwort 2 von coros
Hi,
ich hätte da auch noch ne Lösung. Und zwar lautet die
Sub Datum()
Dim c As Range
On Error Resume Next
For Each c In Selection
If Len(c) = 8 Then
c = DateSerial(Left(c, 4), Mid(c, 5, 2), Right(c, 2))
End If
Next c
End Sub
Kannst es ja mal mit der Formel versuchen. Damit das Makro die Werte in das Datumsformat umwandelt, mußt Du die Zellen vorher selektieren und dann das Makro ausführen lassen.
Aber im Prinzip ist die Funktion genau so wie bei meinem Vorgänger.
Ich hoffe, Dir hilfts,
coros
ich hätte da auch noch ne Lösung. Und zwar lautet die
Sub Datum()
Dim c As Range
On Error Resume Next
For Each c In Selection
If Len(c) = 8 Then
c = DateSerial(Left(c, 4), Mid(c, 5, 2), Right(c, 2))
End If
Next c
End Sub
Kannst es ja mal mit der Formel versuchen. Damit das Makro die Werte in das Datumsformat umwandelt, mußt Du die Zellen vorher selektieren und dann das Makro ausführen lassen.
Aber im Prinzip ist die Funktion genau so wie bei meinem Vorgänger.
Ich hoffe, Dir hilfts,
coros
Antwort 3 von _gau_
Hi Roice,
ich glaube mich zu erinnern, daß die Formel von mir kam ;-)
Du hast zwar schon von sicci eine Lösung, aber damit ich nicht umsonst nachgedacht habe, poste ich meins auch noch:
Sub SAPzuEXCEL()
On Error Resume Next
For Each Zelle In Selection
SAP = Zelle.Value
Zelle.Value = DateSerial(Left(SAP, 4), Mid(SAP, 5, 2), Right(SAP, 2))
Next
End Sub
Erläuterung:
Jeder Zellenwert in der Markierung wird nacheinander der Variablen SAP zugewiesen. Dann wird der Original-Zellenwert durch das aus der Variablen errechnete Datum ersetzt.
(Bemerkung: Die VBA-Funktionen haben englische Bezeichnungen)
Das "On Error..." verhindert Fehler bei evtl. leeren Zellen.
Man könnte auch die Variable SAP weglassen und alles in eine Zeile packen, aber da wird die Formel etwas unübersichtlich.
Frag ruhig nochmal, wenn was unklar ist...
Steffen
ich glaube mich zu erinnern, daß die Formel von mir kam ;-)
Du hast zwar schon von sicci eine Lösung, aber damit ich nicht umsonst nachgedacht habe, poste ich meins auch noch:
Sub SAPzuEXCEL()
On Error Resume Next
For Each Zelle In Selection
SAP = Zelle.Value
Zelle.Value = DateSerial(Left(SAP, 4), Mid(SAP, 5, 2), Right(SAP, 2))
Next
End Sub
Erläuterung:
Jeder Zellenwert in der Markierung wird nacheinander der Variablen SAP zugewiesen. Dann wird der Original-Zellenwert durch das aus der Variablen errechnete Datum ersetzt.
(Bemerkung: Die VBA-Funktionen haben englische Bezeichnungen)
Das "On Error..." verhindert Fehler bei evtl. leeren Zellen.
Man könnte auch die Variable SAP weglassen und alles in eine Zeile packen, aber da wird die Formel etwas unübersichtlich.
Frag ruhig nochmal, wenn was unklar ist...
Steffen
Antwort 4 von roice
Hi sicci, hi coros,
ich dank Euch sehr für die gute Lösung,
dies wird mir zukünftig viel Zeit sparen!
Viele Grüße,
roice
ich dank Euch sehr für die gute Lösung,
dies wird mir zukünftig viel Zeit sparen!
Viele Grüße,
roice
Antwort 5 von roice
@gau
sorry, möchte mich natürlich auch bei Dir bedanken!
grüße roice
sorry, möchte mich natürlich auch bei Dir bedanken!
grüße roice

