# EXCEL US-Datum in DE-Datum



## Grunge (30. Mai 2013)

Hallo Leute,
habe ein kleines Problem google hat mir nicht weitergeholfen. Ich habe in einer Exel Datei Messwerte von einem Temperatursensor gespeichert. Mein Problem ist nur: Er hats im US Format gespeichert, und dazu auch noch kreuz und quer . . . Ich bin am durchdrehen.

Alsooo...Teilweise hab ich durch Zellen formatieren schon das richtige Format hergestellt aber nun habe ich gesehen, dass zwischen durch folgendes Format besteht:

MM.TT.JJJJ hh:mm am/pm

das am/pm soll wech! und dafür halt im 24h-Rythmus die Uhrzeit angegeben werden. Und das MM und TT muss natürlich vertauscht werden, am Ende soll das also so ausschauen

TT.MM.JJJJ hh:mm

Wie mach ich das! Am besten automatisiert, da ich ca. 21.000 Zeilen habe!


----------



## Yaslaw (30. Mai 2013)

In Excel selber habe ich nix funktionierendes gefunden. Aber mit VBA gehts ganz locker
Erstelle in deinem Exceldokument ein Modul und kopiere die folgende Funktion hinein.

```
Public Function convertDateUs2Date(ByRef iRange As Range) As Date
    convertDateUs2D = CDate(iRange.Value)
End Function
```

Dann erstellst du dir einfach eine Spalte (Formatierung: Datum+Zeit wie du es haben willst) mit der folgenden Formel

```
=convertDateUs2D(A1)
```

Hier mein Test aus dem VBA-Directwindow

```
?cdate("06.01.2013 02:45 pm")
06.01.2013 14:45:00
```


----------



## Grunge (30. Mai 2013)

Wie funktioniert das mit den Modulen anlegen?! habs über ALT + F11 irgendwie gemacht nur wenn ich deinen CODE eingebe kommt 'NAME?


----------



## Yaslaw (30. Mai 2013)

Alt+F11 ist gut.
Dann hast du auf der Linken Seite einen Tree. Dort rechte Maustauste und ein Modul hinzufügen. Hab aber keine Ahnung wie das in einem deutschen Excel heisst.


----------



## Grunge (30. Mai 2013)

der sagt mir beim speichern des moduls "Speichern ohne Makros nicht möglich"


----------



## Grunge (30. Mai 2013)

Habs jetzt hinbekommen! das Problem war relativ einfach zu Lösen: Musste die Arbeitsmappe einfach als XLSM speichern******!
Nun funktioniert deine Funktion! aber die Ausgabe sieht wie folgt aus:

in der ausgangszelle steht:
11.05.2012  15:00:00 (muss aber 05.11.2012 werden)
die ausgabe lautet:
00.01.1900 00:00

glaube das Problem ist, dass der ausgang kein datum sondern ein text ist! nicht alle zellen sind mit PM/AM - das ist ja das nervige.  . . in den zellen wo PM/AM gegeben ist gibt deine funktion 0


----------



## Drogist (30. Mai 2013)

Hallo,

in Langform dieser Code:

```
Option Explicit

Function US2GER(USdate)
   Dim T As Integer, M As Integer, J As Integer
   USdate = CStr(USdate)
   T = CInt(Mid(USdate, 4, 2))
   M = CInt(Left(USdate, 2))
   J = CInt(Mid(USdate, 7, 4))
   US2GER = CDate(DateSerial(J, M, T))
End Function
```
 Das Ergebnis dann nur noch als Datum formatieren. Das geht auch in 1 Zeile, aber nicht wirklich übersichtlich.


----------

