Supportnet Computer
Planet of Tech

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

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

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

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

Antwort 5 von roice

@gau

sorry, möchte mich natürlich auch bei Dir bedanken!

grüße roice