Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1512to1516
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Schreibweise Datum

Schreibweise Datum
15.09.2016 15:06:25
Michael
Hallo liebe Forumsmitglieder,
ich habe eine sehr umfangreiche Tabelle in der das Datum z.B. folgendermaßen in der Zelle steht: ‎Jan‎ ‎17‎, ‎2002
Die Tage sind leider nicht durchgehend, d.h. es gibt Tage in einem Jahr die nicht vorhanden sind.
Hat jemand eine Idee wie ich das auf TT.MM.JJJJ umstellen kann?
Herzlichen Dank!!
Viele Grüße
Michael

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schreibweise Datum
15.09.2016 15:31:52
UweD
Hallo
wie liegt das Datum denn vor? als Text?
dann so...

Tabelle1
 AB
1Jan 17, ‎200217.01.2002
2Mär 04, 201604.03.2016

verwendete Formeln
Zelle Formel Bereich N/A
B1:B2=DATWERT(TEIL(A1;5;2)&"."&LINKS(A1;3)&"."&RECHTS(A1;4))  
http://excel-inn.de/dateien/vba_beispiele/tabellenanzeige_in_html_addin.zip
http://Hajo-Excel.de/tools.htm
XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007
Add-In-Version 21.10 einschl. 64 Bit


wenn es bereits als Datum eingetragen ist, dann das Format umstellen.

Tabelle1
 AB
10Sep 15, 2016MMM TT, JJJJ
http://excel-inn.de/dateien/vba_beispiele/tabellenanzeige_in_html_addin.zip
http://Hajo-Excel.de/tools.htm
XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007
Add-In-Version 21.10 einschl. 64 Bit


Gruß UweD
Anzeige
AW: Schreibweise Datum
15.09.2016 16:08:09
Michael
Hallo Uwe,
danke für Deine schnelle Hilfe. Leider funktioniert weder der erste noch der zweite Weg.
Ich habe Dir mal die Daten hochgeladen. Mache ich etwas falsch?
https://www.herber.de/bbs/user/108202.xlsx
Danke + viele Grüße
Michael
AW: Schreibweise Datum
15.09.2016 16:23:53
UweD
Hallo
am Anfang und dazwischen befinden sich TEILWEISE noch andere Zeichen (Code 63)
leider nur teilweise, sonst hätte man das mitzählen können.
AW: Schreibweise Datum
15.09.2016 16:32:23
UweD
Nimm diese Formel.
die störenden Zeichen werden eliminiert.
Wichtig es ist KEIN Leerzeichen.
Zwischen den ersten " " habe ich das erste Zeichen aus Zelle A1 kopiert.
Du kannst die Formel aber auch von hier nehmen.
=DATWERT(TEIL(WECHSELN(A1;"‎";"");5;2)&"."&LINKS(WECHSELN(A1;"‎";"");3) &"."&RECHTS(WECHSELN(A1;"‎";"");4)) 

Gruß UweD
Anzeige
sorry, nicht gesehen, aber klasse...
15.09.2016 16:49:54
Michael
ich hatte zeichen(63) beim Wechseln probiert, das ging nicht...
AW: Schreibweise Datum
15.09.2016 16:48:01
Michael
Hi,
die 63er lassen sich aber komischerweise auch nicht mit wechseln entfernen.
Vielleicht doch VBA?
Sub test()
Dim w$, wOut$, i&
w = Range("A1").Text
For i = 1 To Len(w)
'  Debug.Print i & ": " & Asc(Mid(w, i, 1))
If Asc(Mid(w, i, 1))  63 Then wOut = wOut & Mid(w, i, 1)
Next
Range("B1") = wOut
End Sub

So geht's, aber komischerweise NUR, wenn B1 als TEXT formatiert ist: darauf kannst Du dann die Formel anwenden.
Grüße,
Michael
AW: Schreibweise Datum
15.09.2016 17:35:53
Michael
Hallo,
ich bin total dankbart für die Hilfe.
Leider bin ich mit VBA nicht wirklich bewandert. Ich habe den VBA-Code in ein Makro kopiert und die Tabelle als Excel-Makrodatei gespeichert.
Wenn ich die Datei öffne und das Makro ausführe passiert aber nichts. Wo mache ich einen Fehler?
Viele Grüße
Michael
Anzeige
AW: Schreibweise Datum mit Makro
16.09.2016 14:44:40
Michael
Hi,
ich habe Uwes Formel getestet: sie funktioniert anscheinend nur bis B2, darunter kommt ein Fehler.
Beim Makros war das seltsamerweise genauso; es liegt anscheinend daran, daß "Jan" auf dt. und engl. übereinstimmt, "Dec" bzw. "Dez" aber nicht.
Anbei Datei mit UDF (das ist eine selbstgestrickte Funktion, die man direkt in der Tabelle einsetzen kann) im Modul1: https://www.herber.de/bbs/user/108213.xlsm
Das Makro sieht so aus:
Option Explicit
Const e2d = "MayMaiOctOktDecDez"
Public Function D2D(r As Range)
Dim w$, wOut$, i&, p&
w = r.Text
For i = 1 To Len(w)
'  Debug.Print i & ": " & Asc(Mid(w, i, 1))
If Asc(Mid(w, i, 1))  63 Then wOut = wOut & Mid(w, i, 1)
Next
' Debug.Print "e: " & wOut
' Stop
p = InStr(e2d, Left(wOut, 3))
If p > 0 Then wOut = Mid(e2d, p + 3, 3) & Mid(wOut, 4)
' Debug.Print "d: " & wOut
D2D = DateValue(wOut)
End Function

Die Konstante e2d (für english to deutsch) enthält nacheinander je die englische und die deutsche Schreibweise und ist erweiterbar, falls ich noch was übersehen habe.
In der Function werden alle 63er aussortiert, anschließend wird überprüft, ob die ersten 3 Buchstaben (das Monatskürzel) in e2d enthalten ist, und falls ja, wird es durch die deutsche Schreibweise ersetzt.
Am liebsten hätte ich nicht nur den 63 aussortiert, sondern alles, was außerhalb von "0-9", "a-z" und "," ist, aber wenn sich die Daten nicht ändern, sollte es ja so laufen.
Schöne Grüße,
Michael
Anzeige
AW: Schreibweise Datum mit Makro
16.09.2016 15:58:38
Michael
Hallo Michael,
Deine Datei ist schlicht genial!
Habe noch "MarMärz" ergänzt, was dann für mich total leicht war.
Ganz herzlichen Dank!!!
Viele Grüße
Michael
"Mär" ohne z reicht,
16.09.2016 16:24:10
Michael
Michael,
gern geschehen & schöne Grüße zurück,
Michael
Die Behauptung d.Existenz eines Zeichens 63 ...
17.09.2016 03:53:10
Luc:-?
…ist falsch, Folks,
es handelt sich beim Datumstext schlicht um Unicode und das angebliche Zeichen(63) ist ein sehr schmaler Zwischenraum mit Unicode 8206. Auf so etwas und wohl auch die ganze Form der Datums­Darstellung reagiert DATWERT allergisch*.
Man kann diese Zeichen schon berücksichtigen, muss dann aber immer noch eine UDF einsetzen, um den Text zu normieren. Die Fml könnte dann so aussehen (RECHTS selber probieren, LINKS wird wohl eher nichts):
B1[:B14]:=DATWERT(WECHSELN(WECHSELN(WECHSELN(WECHSELN(MaskOn(TEIL(A1;7;4)&"."&TEIL(A1;2;4)&" "&TEIL(A1;14;4);"anu";".");
"ar";"är");"y";"i");"Oc";"Ok");"ec";"ez"))

Für die gezeigten Datumswerte + 3 zusätzliche …
{"‎Jan‎ ‎02‎, ‎2002";"‎Jan‎ ‎01‎, ‎2002";"‎Dec‎ ‎31‎, ‎2001";"‎Dec‎ ‎28‎, ‎2001";"‎Dec‎ ‎27‎, ‎2001";"‎Dec‎ ‎26‎, ‎2001";"‎Dec‎ ‎25‎, ‎2001";
"‎Dec‎ ‎24‎, ‎2001";"‎Dec‎ ‎21‎, ‎2001";"‎Dec‎ ‎20‎, ‎2001";"‎Dec‎ ‎19‎, ‎2001";"‎Oct‎ ‎19‎, ‎2002";"‎May‎ ‎19‎, ‎2003";"‎Mar‎ ‎19‎, ‎2004"}

…sähe das Ergebnis dann als Datwert so …
{37258;37257;37256;37253;37252;37251;37250;37249;37246;37245;37244;37548;37760;38065}
…und formatiert so aus:
{"02.01.2002";"01.01.2002";"31.12.2001";"28.12.2001";"27.12.2001";"26.12.2001";"25.12.2001";
"24.12.2001";"21.12.2001";"20.12.2001";"19.12.2001";"19.10.2002";"19.05.2003";"19.03.2004"}
* Meine UDF T2Nb aber nur auf Unicode, der schon mit MaskOn normalisiert wdn kann.

Feedback nicht unerwünscht! Gruß, Luc :-?
Besser informiert mit …
Anzeige
sowas wie unicode hatte ich mir auch
17.09.2016 14:06:50
Michael
schon gedacht, Luc:-?,
aber ich wollte es nicht vertiefen, wenn es denn so läuft...
Schöne Grüße,
Michael
Aber es lohnt sich doch, das zu vertiefen, ...
17.09.2016 15:41:01
Luc:-?
…Michael,
denn das kann bei DatenÜbernahmen aus dem Netz immer wieder mal passieren. Die meisten ASCII-Zeichen stehen in Unicode an gleicher Stelle, in meiner Liste in der 1., der 0-Spalte (→ weitere 255 Spalten folgen!). D.h., Unicode stellt diesen Zeichen quasi ein Chr(0) voran, das mit ZEICHEN nicht dargestellt wdn kann. Die Zähler der alten XlFktt berücksichtigen diese Unicode-Komponente mal und mal nicht (Letzteres anscheinend besonders zwischen Ziffern). Innerhalb der Fktt (wie auch - unbeabsichtigt - in MaskOn) könnte auch schon eine Art von „natürlicher“ Konvertierung stattfinden, die sich aber nicht auf Unicode-Zeichen mit Listen­Spalten­Kennung≠0 auswirkt. Deshalb bleibt Chr(8206) erhalten und kann nicht als ZEICHEN(63) gewechselt wdn (als ChrW(8206) bzw UChar(8206) aber schon).
Anscheinend bleibt dieses Chr(0) hier auch am Text­Anfang erhalten, so dass LINKS nicht fktioniert. RECHTS hingg könnte eher fktio­nieren und mit TEIL kann man ja den Text­Ausschnitt recht exakt bestimmen.
Übrigens kann ich mit weiteren UDFs die Fml auch noch kürzer fassen:
D1[:D14]:=RepOpt("substitute";5;1;{2.3};A1;VSplit(UChar(8206)&" ar y Oc ec");VSplit(" rz i Ok ez"))
E1[:E14]:=T2Nb(RepOpt("substitute";5;1;{2.3};A1;VSplit(UChar(8206)&" ar y Oc ec");VSplit(" rz i Ok ez")))
F1[:F14]: {=DATWERT(RepOpt("substitute";5;1;{2.3};VJoin(T2CharVect(MaskOn(A1;"anu");"2 1 3";" ");".");VSplit("ar y Oc ec");
VSplit("rz i Ok ez")))}

Gruß & schöWE, Luc :-?
Anzeige
Inzwischen habe ich bemerkt, ...
17.09.2016 20:24:38
Luc:-?
…dass die internen Zähler richtig zeichen­weise zählen, die Zähl­Abwei­chungen kommen nur dadurch zustande, dass der Text offen­sichtlich mehrere dieser schmalen ZR enthält. Durch Entfernung dieser Zeichen kann man also den Text normalisieren und muss dann nur noch die Monats­Namen austauschen bzw gleich durch Zahlen ersetzen u/o in die richtige Reihenfolge bringen, denn mit dieser Darstellungsform kann DATWERT in dt XL-Version nichts anfangen. Wenn man den MonatsNamen­Tausch etwas universell-internationaler gestalten wollte, könnte man auch folgd Fml, die nur die Trivial-UDF UChar benötigt, verwenden (der Einfachheit halber habe ich umschließend noch meine bisher unveröffentlichte UDF T2Nb verwendet, die auch einen solchen DatumsText in einen DatumsWert wandeln kann):
J1[:J14]: {=T2Nb(ERSETZEN(WECHSELN(A1;UChar(8206);"");1;3;INDEX(TEXT(DATUM(2000;ZEILE(A$1:A$12);1);"MMM");VERGLEICH(TEIL(A1;2;3);TEXT(DATUM(2000;ZEILE(A$1:A$12);1);"[$-409]MMM");0))))}
Luc :-?
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige