Datumstext deutsch/ englisch in echtes Datum
#1
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



.xlsm   LB1972_20170218_Datumstext_in_echtes Datum_wandeln.xlsm (Größe: 48,73 KB / Downloads: 17)

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

Hat hier jemand von euch "den Kniff"?

Vielen dank schon mal.

Gruß

LB1972
Top
#2
(18.02.2017, 12: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.
Wir sehen uns!
... Detlef

Meine Beiträge können Ironie oder Sarkasmus enthalten.

Top
#3
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.
Gruß Atilla
Top
#4
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:
Beste Grüße
  Günther

Excel-ist-sexy.de
  …schau doch mal rein!
Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
Top
#5
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
Top
#6
Ja, das britische Datum "frisst" Power Query auch ohne Murren  Angel
Beste Grüße
  Günther

Excel-ist-sexy.de
  …schau doch mal rein!
Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
Top
#7
(18.02.2017, 12: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..?
Gruß Jörg
stolzes Mitglied im ----Excel-Verein
Freund einer excellenten Power Query-Abfrage
Top
#8
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
Top
#9
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
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#10
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
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste