Clever-Excel-Forum

Normale Version: Datumstext deutsch/ englisch in echtes Datum
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo Community,


folgender Sachverhalt:

Ich übernehme aus einem Datenbankreport Datumstexte. Diese können je nach
Anwender deutsche Datumstexte, z.B. 4. Mai 17, oder einem englischen Datumsschema, z.B. 04-May-17 
entsprechen.
In der Verwendung benötige ich das Datum als rechenbare Angabe, was ich durch Multiplikation mit 1
zu erreichen versuche.
Ein Problem ergibt sich für März, Mai, Oktober und Dezember, weil hier mein deutsches Excel den englischen Datumstext nicht umsetzen kann.

Meine aktuelle Lösung sieht so aus, dass ich hier mit "Wechseln", englische Kürzel gegen deutsche tausche:

=WECHSELN(WECHSELN(WECHSELN(WECHSELN(;"Mar";"Mrz");"May";"Mai");"Oct";"Okt");"Dec";"Dez")*1


[attachment=9654]

Das funktioniert, scheint mir aber von mäßiger Eleganz zu sein.

Hat hier jemand von euch "den Kniff"?

Vielen dank schon mal.

Gruß

LB1972
(18.02.2017, 11:58)LB1972 schrieb: [ -> ]Ich übernehme aus einem Datenbankreport Datumstexte. Diese können je nach
Anwender deutsche Datumstexte, z.B. 4. Mai 17, oder einem englischen Datumsschema, z.B. 04-May-17 
entsprechen.
Ich wäre sehr überrascht wenn in der Datenbank tatsächlich unterschiedliche Datumsformate abgespeichert sind. Denn dann hätte der Datenbankprogrammierer das selbe Problem wie du.

Und dieses Problem sollte möglichst schon in der Datenbank behoben werden.
Hallo,

da Du VBA einsetzt, hier eine VBA Lösung:


Code:
Sub Datum_format()
Dim LoLetzte As Long, i As Long
Dim vntDatum
LoLetzte = Cells(Rows.Count, 12).End(xlUp).Row
Application.ScreenUpdating = False

For i = 9 To LoLetzte
 vntDatum = Cells(i, 13)
 If IsDate(vntDatum) Then 'ist deutsches Format
   Cells(i, 15) = CDate(vntDatum)
 Else  'wenn nicht deutsches Format
   Cells(i, 15) = Format(vntDatum, "MM\/DD\/YYYY")
   Cells(i, 15).NumberFormat = "DD-MMM-YYYY"
 End If
Next i

'Daten Text in Spalten mit Auswahl der Option Datum ausfüheren
Range("O9:O" & LoLetzte).TextToColumns Destination:=Range("O9"), DataType:=xlFixedWidth, _
       FieldInfo:=Array(0, 4), TrailingMinusNumbers:=True
       
Application.ScreenUpdating = True
End Sub


Spalte M wird ausgelesen und in Spalte O wird geschrieben.
Moin,
ist es wirklich so, dass der englische Datumstext "04-May-17" ist (GB)? Oder doch wohl eher "May-04-17" US).
Und ich würde die Daten aus dem Report mit Power Query einlesen, dann bist du das Problem (in beiden Varianten) rasch los.

- Ähm, vielleicht schaffe ich es heute noch, in meinen Blog einen dazu gut passenden Beitrag (mit Video) einzustellen ...  Huh Zumindest spreche ich gerade die letzten ~30 Texte. Im Moment brauche ich eine "schöpferische Pause".  :05:
Hallo Atilla,

danke für den Ansatz. Das müsste helfen.

@ shift-del,

es ist einfacher (und billiger) in meinem Excel das Problem
zu fixen, als einen namhaften Datenbankhersteller zu etwas zu bewegen.

@ GMG-CC,

das Datum kommt tatsächlich auch in der englischen Version als TT-MMM-JJJJ

Danke für die Unterstützung und schönes WE

LB1972
Ja, das britische Datum "frisst" Power Query auch ohne Murren  Angel
(18.02.2017, 11:58)LB1972 schrieb: [ -> ]Hallo Community,
...
Meine aktuelle Lösung sieht so aus, dass ich hier mit "Wechseln", englische Kürzel gegen deutsche tausche:

=WECHSELN(WECHSELN(WECHSELN(WECHSELN(;"Mar";"Mrz");"May";"Mai");"Oct";"Okt");"Dec";"Dez")*1

Das funktioniert, scheint mir aber von mäßiger Eleganz zu sein.
...
Gruß

LB1972

Hallo, was meinst du mit "mäßiger Eleganz" die Formel liefert das gewünschte Ergebnis. Was willst du denn noch? Eine Verkürzung..? Das geht aber warum? Für einpaar Zeichen... Oder willst di was ganz anderes erreichen..?
Vielleicht denkt LB ja an so etwas, Jockel:
{=--(LINKS(A1;3)&VERGLEICH(TEIL(A1;4;3);TEXT("1."&ZEILE(1:12);"[$-409]MMM");0)&RECHTS(A1;3))}
Achtung, (singulare) Matrixformel!
Und dann natürlich als Datum formatieren! ;)
Gruß, Castor
Moin!
Da Eleganz bekanntlich im Auge des Betrachters liegt, will ich auch noch eine Möglichkeit erwähnen:
=WECHSELN(M9;TEIL(M9;4;3);SUCHEN(TEIL(M9;4;3);"||janfebmaraprmayjunjulaugsepoctnovdec")/3)*1
Und dann natürlich als Datum formatieren!  :26:

Gruß Ralf
Hallo zusammen,

vielen Dank für eure Anregungen.

Auf die Frage nach der Eleganzvorstellung möchte ich noch kurz
eingehen.

Mir nicht bekannt (aber das muss ja nix heißen) wäre eine
"Umkehrung" der "TEXT"-Formel,
Code:
=TEXT(H11;"[$-en-US]TT-MMM-JJ;@")


so dass ich einen Bezug in definierter Textform in ein Datum wandeln könnte.

Beispiel:


Code:
M9 = 18-Feb-17

Q9 =ZAHLENWERT(M9;"-";"-")


Die Funktion "ZAHLENWERT" existiert zwar, kann aber wohl keinen Datumstext umsetzen.


Viele Grüße

LB1972
Seiten: 1 2