| |
| Xometry verstärkt sein Angebot für die Blechbearbeitung: Mehr Fertigungsoptionen und bessere Sofort-Angebote, eine Pressemitteilung
|
Autor
|
Thema: Datum konvertieren (4651 mal gelesen)
|
Axel.Strasser Ehrenmitglied V.I.P. h.c. Selbstständig im Bereich PLM/CAx
Beiträge: 4107 Registriert: 12.03.2001 Früher war vieles gut, und das wäre es heute immer noch, wenn man die Finger davon gelassen hätte!
|
erstellt am: 08. Jun. 2010 17:43 <-- editieren / zitieren --> Unities abgeben:
|
bst Mitglied
Beiträge: 192 Registriert: 31.08.2004 .
|
erstellt am: 08. Jun. 2010 20:03 <-- editieren / zitieren --> Unities abgeben: Nur für Axel.Strasser
Abend Axel, versuche das mal so. CU, Bernd --
Code: Option Explicit Option Private ModuleConst cstrMonth = "jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec" Dim objRe As Object Sub main() Dim i As Long Set objRe = CreateObject("vbscript.regexp") objRe.Pattern = "^(" & cstrMonth & ") *(\d{1,2}) *(\d{4})$" objRe.IgnoreCase = True Range("A1") = "May 3 2010" Range("A2") = "DEC 24 2011" For i = 1 To 2 Cells(i, 2).Value = ConvertDate(Cells(i, 1).Value) Next Set objRe = Nothing End Sub Function ConvertDate(ByVal strUSDate As String) As Date Dim objMc As Object Dim intIndex As Integer Set objMc = objRe.Execute(strUSDate) If objMc.Count Then With objMc(0) intIndex = InStr(1, cstrMonth, .SubMatches(0), vbTextCompare) ConvertDate = DateSerial(CInt(.SubMatches(2)), (intIndex + 3) / 4, CInt(.SubMatches(1))) End With End If End Function
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Oberli Mike Ehrenmitglied V.I.P. h.c. Dipl. Maschinen Ing. / Supporter
Beiträge: 3864 Registriert: 29.09.2004 Excel 2010 128GB SSD Windows 7
|
erstellt am: 08. Jun. 2010 21:43 <-- editieren / zitieren --> Unities abgeben: Nur für Axel.Strasser
Hallo Axel, Ich gehe mal davon aus, dass Excel 2007 gleich reagiert wie Excel 2000. Alle Zeilen markieren, dann "Format" - "Zellen", auf die Kategorie Benutzerdefiniert wechseln, und dann als Typ TT.MM.JJJJ eingeben. (Ev. müssen die Buchstaben durch jene von der englischen Version ersetzt werden, ev. DD.MM.YYYY. M --> 4 MM --> 04 MMM --> Apr. MMMM --> April Gruss Mike ------------------ The Power Of Dreams Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Axel.Strasser Ehrenmitglied V.I.P. h.c. Selbstständig im Bereich PLM/CAx
Beiträge: 4107 Registriert: 12.03.2001 Früher war vieles gut, und das wäre es heute immer noch, wenn man die Finger davon gelassen hätte!
|
erstellt am: 08. Jun. 2010 22:16 <-- editieren / zitieren --> Unities abgeben:
@Mike, ich bekomme die Datei als excelfile und die Datumsspalte ist Text. Ich hatte es zuerst auch so versucht, aber ich muss es zuerst "konvertieren, bevor ich es umformatieren kann. Wenn es mal sauber ein Datumsformat ist, weiss ich schon was machen, dann kommt ja noch die engl./dt. Monatsbezeichnungen dazu. @Bernd, danke, werde Dein Makro morgen mal ausprobieren. Hatte gehofft dass es da einen Trick ohne Makro gibt. Axel ------------------ Inoffizielle deutsche CATIA Hilfeseite Netiquette von cad.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Oberli Mike Ehrenmitglied V.I.P. h.c. Dipl. Maschinen Ing. / Supporter
Beiträge: 3864 Registriert: 29.09.2004 Excel 2010 128GB SSD Windows 7
|
erstellt am: 10. Jun. 2010 07:22 <-- editieren / zitieren --> Unities abgeben: Nur für Axel.Strasser
|
Axel.Strasser Ehrenmitglied V.I.P. h.c. Selbstständig im Bereich PLM/CAx
Beiträge: 4107 Registriert: 12.03.2001 Früher war vieles gut, und das wäre es heute immer noch, wenn man die Finger davon gelassen hätte!
|
erstellt am: 10. Jun. 2010 08:36 <-- editieren / zitieren --> Unities abgeben:
|
Thomas Harmening Moderator Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 Das Innerste geäussert und aufs Äusserste verinnerlicht
|
erstellt am: 11. Jun. 2010 12:45 <-- editieren / zitieren --> Unities abgeben: Nur für Axel.Strasser
Bernd hat ja schon den perfekten Code geliefert ;-) somit ist der FormelEinzeiler nur sportlich zu sehen Code: =DATUM(RECHTS(A1;4);VERGLEICH(KLEIN(LINKS(A1;3));{"jan";"feb";"mar";"apr";"may";"jun";"jul";"aug";"sep";"oct";"nov";"dec"};0);TEIL(A1;FINDEN(" ";A1;1)+1;LÄNGE(A1)-FINDEN(" ";A1;1)-4))
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Larissa123 Mitglied IT
Beiträge: 2 Registriert: 20.03.2014
|
erstellt am: 20. Mrz. 2014 14:03 <-- editieren / zitieren --> Unities abgeben: Nur für Axel.Strasser
Hallo Thomas! Ich habe im cad Forum eine Antwort von dir gefunden, wie man ein Datum mit einer formel konvertiert. Hast Du vielleicht eine Lösung für diese: 16/Mar/14 soll als 16.03.14 dargestellt werden? Zur Info 16/Apr/14 konvertiert xls von alleine in 16.04.14. lg Larissa Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
..... Mitglied
Beiträge: 433 Registriert: 01.07.2011
|
erstellt am: 20. Mrz. 2014 14:34 <-- editieren / zitieren --> Unities abgeben: Nur für Axel.Strasser
Verwende MRZ statt MAR. Excel hat da so seine Zickigkeiten bei den Sprachen... Kanone -> Spatz: >> http://www.office-loesung.de/ftopic372248_0_0_asc.php[edit] Fingerübung nachgeschoben: Thomas' Formel angepaßt auf Deine Bedürfnisse sähe so aus:
Code: =DATUM(RECHTS(A1;2);VERGLEICH(KLEIN(TEIL(A1;FINDEN("/";A1;1)+1;LÄNGE(A1)-FINDEN("/";A1;1)-3));{"jan";"feb";"mar";"apr";"may";"jun";"jul";"aug";"sep";"oct";"nov";"dec"};0);LIN KS(A1;2))
die wirft aber 1914 aus, also Jahr vollständig schreiben [16/mar/2014] und so: Code: =DATUM(RECHTS(A1;4);VERGLEICH(KLEIN(TEIL(A1;FINDEN("/";A1;1)+1;LÄNGE(A1)-FINDEN("/";A1;1)-5));{"jan";"feb";"mar";"apr";"may";"jun";"jul";"aug";"sep";"oct";"nov";"dec"};0);LIN KS(A1;2))
ODER beim Jahr noch 'ne +100 reinmogeln [RECHTS(A1;2)+100]. Nicht schön, aber tut. HTH [Diese Nachricht wurde von ..... am 20. Mrz. 2014 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Harmening Moderator Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 Das Innerste geäussert und aufs Äusserste verinnerlicht
|
erstellt am: 20. Mrz. 2014 16:03 <-- editieren / zitieren --> Unities abgeben: Nur für Axel.Strasser
als Formel: Code: =DATUM(RECHTS(A1;4);VERGLEICH(TEIL(A1;FINDEN("/";A1;1)+1;FINDEN("/";A1;FINDEN("/";A1;1)+1)-(FINDEN("/";A1;1)+1));{"jan";"feb";"mar";"apr";"may";"jun";"jul";"aug";"sep" ;"oct"; "nov";"dec"};0);TEIL(A1;1;FINDEN("/";A1;1)-1))
Aber! Den betreffenden Bereich markieren und Suchen "mar" Ersetzen "Mrz" sollte das Problem auch beheben - getestet mit XL2007. Ist IMHO sinnvoller dito mit may, oct und dec ;-) Edit: ;-) 5Punkt, deine Formel war noch nicht da, als ich mir vorgenommen habe die umzubauen^^ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Larissa123 Mitglied IT
Beiträge: 2 Registriert: 20.03.2014
|
erstellt am: 20. Mrz. 2014 19:52 <-- editieren / zitieren --> Unities abgeben: Nur für Axel.Strasser
|