Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1144to1148
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

Unterschiedliche Datumsformate

Unterschiedliche Datumsformate
Fred
Hallo,
ich verstehe die (Excel-) Welt nicht mehr.
Folgende Daten liegen in einer CSV-Datei vor:
1-002;02/11/2010 09:47:57;26,785371
1-002;02/12/2010 08:52:33;23,602951
1-002;02/12/2010 09:11:17;42,806674
1-002;02/15/2010 08:08:30;38,220245
1-002;02/15/2010 15:48:44;24,97576
1-002;02/16/2010 07:55:44;25,256562
1-002;02/17/2010 08:51:02;26,052167
1-002;02/18/2010 08:14:30;-1190,987705
1-002;02/19/2010 07:53:11;25,318962
1-002;02/22/2010 07:34:59;30,732197
1-002;02/23/2010 08:27:44;26,192568
1-002;02/24/2010 08:12:34;25,677764
1-002;02/25/2010 08:40:50;25,459363
1-002;02/26/2010 08:04:06;25,630964
1-002;03/01/2010 09:17:51;26,270568
1-002;03/02/2010 09:24:01;25,615364
1-002;03/02/2010 13:21:46;24,58575
Öffne ich diese Datei mit Excel, dann habe ich Dateumsmix im deutschen- und amerikanischen Format.
Wie kann das sein und "viel wichtiger" - wie ändere ich das (egal ob nachher deutsches oder amerikanisches Format - hauptsache einheitlich).
Vielen Dank für jeden Tipp!
AW: Unterschiedliche Datumsformate
15.03.2010 12:18:25
selli
hallo fred,
also einheitlich scheint mir das doch zu sein:
monat / tag / jahr uhrzeit
die csv-datei ist wie sie ist. wo kommt sie denn her?
gruß selli
AW: Unterschiedliche Datumsformate
15.03.2010 12:23:59
Heinz
Hallo Fred,
es werden alle Datumswerte, die im zweiten Feld (amerikanisch Tag) einen Wert maximal 12 haben in ein deutsches Format (erstes Feld Tag, zweites Monat) verwandelt. Da das über 12 nicht möglich ist (es gibt nur 12 Monate) bleibt der Text stehen wie er ist.
Ändere das Suffix von csv auf txt und lies in Excel ein, dann hast du das Gewünschte.
Gruß
Heinz
AW: Unterschiedliche Datumsformate
15.03.2010 12:56:49
Fred
Hallo Heinz,
vielen Dank für diese Erklärung - das leuchtet soweit ein.
Das Umbenennen in *.txt und einlesen über den Wizard brachte leider keine Verbesserung - das hatte ich bereits ausprobiert.
Gibt es unter Excel eine Option oder ähnliches, wo ich diese automatische Umwandlung abschalten kann?
Dann hätte ich zumindest alle Zeiten in einem Format. Das deutsche wäre mir "natürlich" am liebsten.
@ Selli: Diese Daten werden automatisch (in größerer Form mit weit mehr Spalten etc.) aus SQL-Datenbanken generiert.
Danke für jede Hilfe!
Anzeige
AW: Unterschiedliche Datumsformate
15.03.2010 13:18:12
Detlef
Hallo Fred,
Daten importieren mit folgendem Code:
Option Explicit Dim m_Wert1 As String Sub proTextdateiImport() Dim fName As String Dim Mldg, Titel, Voreinstellung fName = Application.GetOpenFilename(, , "Bitte Textdatei auswählen", True) If fName = "" Then Exit Sub End If '**Eingabeaufforderung für Textseperator Aufforderung festlegen. Mldg = "Als Standardwert ist ; gesetzt. Sind die Daten" _ & Chr(10) & "mit einem TAB begrenzt, dann bitte die" _ & Chr(10) & "Eingabe leer abschicken." Titel = "Bitte geben Sie den Textbegrenzer ein." ' Titel festlegen. Voreinstellung = ";" ' Voreinstellung festlegen. ' Meldung, Titel und Standardwert anzeigen. m_Wert1 = InputBox(Mldg, Titel, Voreinstellung) '**Format des Arbeitsblattes auf TEXT setzen, wg. korrektem Zahlenimport '**Prozentzahlen werden sonst falsch eingelesen ActiveWorkbook.ActiveSheet.Cells.Select Selection.Delete Shift:=xlUp Selection.NumberFormat = "@" Range("A1").Select If m_Wert1 = "" Then m_Wert1 = vbTab End If CSVImport fName, ActiveWorkbook.ActiveSheet, m_Wert1, 1 '**Textbegrenzer "" löschen ActiveWorkbook.ActiveSheet.UsedRange.Select Selection.Replace What:="""", Replacement:="", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False Range("A1").Select End Sub und danach die Spalte mit folgender Formel umwandeln:
import

 ABCD
11-00202/11/2010 09:47:5726,78537111.02.2010
21-00202/12/2010 08:52:3323,60295112.02.2010
31-00202/12/2010 09:11:1742,80667412.02.2010
41-00202/15/2010 08:08:3038,22024515.02.2010
51-00202/15/2010 15:48:4424,9757615.02.2010
61-00202/16/2010 07:55:4425,25656216.02.2010
71-00202/17/2010 08:51:0226,05216717.02.2010
81-00202/18/2010 08:14:30-1190,98770518.02.2010
91-00202/19/2010 07:53:1125,31896219.02.2010
101-00202/22/2010 07:34:5930,73219722.02.2010
111-00202/23/2010 08:27:4426,19256823.02.2010
121-00202/24/2010 08:12:3425,67776424.02.2010
131-00202/25/2010 08:40:5025,45936325.02.2010
141-00202/26/2010 08:04:0625,63096426.02.2010
151-00203/01/2010 09:17:5126,27056801.03.2010
161-00203/02/2010 09:24:0125,61536402.03.2010
171-00203/02/2010 13:21:4624,5857502.03.2010

Formeln der Tabelle
ZelleFormel
D1=DATUM(TEIL(B1;7;4); TEIL(B1;1;2); TEIL(B1;4;2))
D2=DATUM(TEIL(B2;7;4); TEIL(B2;1;2); TEIL(B2;4;2))
D3=DATUM(TEIL(B3;7;4); TEIL(B3;1;2); TEIL(B3;4;2))
D4=DATUM(TEIL(B4;7;4); TEIL(B4;1;2); TEIL(B4;4;2))
D5=DATUM(TEIL(B5;7;4); TEIL(B5;1;2); TEIL(B5;4;2))
D6=DATUM(TEIL(B6;7;4); TEIL(B6;1;2); TEIL(B6;4;2))
D7=DATUM(TEIL(B7;7;4); TEIL(B7;1;2); TEIL(B7;4;2))
D8=DATUM(TEIL(B8;7;4); TEIL(B8;1;2); TEIL(B8;4;2))
D9=DATUM(TEIL(B9;7;4); TEIL(B9;1;2); TEIL(B9;4;2))
D10=DATUM(TEIL(B10;7;4); TEIL(B10;1;2); TEIL(B10;4;2))
D11=DATUM(TEIL(B11;7;4); TEIL(B11;1;2); TEIL(B11;4;2))
D12=DATUM(TEIL(B12;7;4); TEIL(B12;1;2); TEIL(B12;4;2))
D13=DATUM(TEIL(B13;7;4); TEIL(B13;1;2); TEIL(B13;4;2))
D14=DATUM(TEIL(B14;7;4); TEIL(B14;1;2); TEIL(B14;4;2))
D15=DATUM(TEIL(B15;7;4); TEIL(B15;1;2); TEIL(B15;4;2))
D16=DATUM(TEIL(B16;7;4); TEIL(B16;1;2); TEIL(B16;4;2))
D17=DATUM(TEIL(B17;7;4); TEIL(B17;1;2); TEIL(B17;4;2))


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Gruß Detlef
Anzeige
AW: Unterschiedliche Datumsformate
15.03.2010 13:35:28
Heinz
Hallo Fred,
wenn du beim Einlesen mit dem Textassistenten für die Spalte mit dem Datum und der Uhrzeit im dritten schritt das Textformat wählst, dann bleiben die Werte wie sie im Textfile sind.
Gruß
Heinz
AW: Unterschiedliche Datumsformate
15.03.2010 14:11:34
Fred
Hallo Detlef,
danke für das Script. Leider bekomme ich eine Fehlermeldung:
"Compile error:
Sub or Function not defined"
in der Zeile "CSVImport fName, ....
Ist das eine separate Sub?
ich würde mir das gerne näher ansehen (man wird ja nicht dümmer - hoffentlich ;-))
AW: Unterschiedliche Datumsformate
15.03.2010 15:52:28
Detlef
Hallo Fred,
sorry, da hab ich was vergessen zu kopieren. Hier der fehlende Teil:
Function Split(strText As String, strTZ As String) As Variant
    Dim lngPos As Long
    Dim strTemp As String
    Dim arrTeile() As String
    strTemp = strText
    Redim arrTeile(0)
    Do
        lngPos = InStr(1, strTemp, strTZ)
        If lngPos > 0 Then
            If arrTeile(Ubound(arrTeile)) <> "" Then
                'Array vergrößern 
                Redim Preserve arrTeile(Ubound(arrTeile) + 1)
            End If
            arrTeile(Ubound(arrTeile)) = _
                VBA.Mid(strTemp, 1, lngPos - 1)
            strTemp = VBA.Mid(strTemp, lngPos + 1)
        Else
            If arrTeile(Ubound(arrTeile)) <> "" Then
                'Array vergrößern 
                Redim Preserve arrTeile(Ubound(arrTeile) + 1)
            End If
            arrTeile(Ubound(arrTeile)) = strTemp
        End If
    Loop Until (strTemp = "") Or (lngPos <= 0)
    Split = arrTeile
End Function

Sub CSVImport(strDateiName As String, objTab As Worksheet, _
    Optional strTZ As String, _
    Optional lngZeile As Long = 1)
    Dim arrDaten As Variant
    Dim intI As Integer
    Dim intSpalte As Integer
    Dim objFSO As New FileSystemObject
    Dim objTD As TextStream
    Dim strText As String
    On Error Resume Next
    'Datei öffnen 
    Set objTD = objFSO.OpenTextFile(strDateiName, _
        ForReading, False)
    'Die Datei zeilenweise lesen 
    Do While Not objTD.AtEndOfStream
        strText = objTD.ReadLine
        'Zeile aufsplitten 
        arrDaten = Split(strText, strTZ)
        'Daten in Tabelle einfügen 
        intSpalte = 1
        For intI = Lbound(arrDaten) To Ubound(arrDaten)
            objTab.Cells(lngZeile, intSpalte).Value = arrDaten(intI)
            intSpalte = intSpalte + 1
        Next intI
        'Zeilenzähler erhöhen 
        lngZeile = lngZeile + 1
    Loop
    objTD.Close
    Set objTD = Nothing
    Set objFSO = Nothing
End Sub
Konnte ich allerdings nicht unter 2007 testen, unter 2002 und 2003 läuft es.
Gruß Detlef
Anzeige
AW: Unterschiedliche Datumsformate
15.03.2010 13:42:56
Heinz
Hallo Fred,
oder der Makrorecorder hat das ausgespuckt:
Sub Einlesen()
Workbooks.OpenText Filename:="C:\Daten\Excel\00Test\Test.txt", Origin:= _
xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote _
, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=True, Comma:=False _
, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 2), _
Array(3, 1)), TrailingMinusNumbers:=True
End Sub
Ergibt ebenfalls den Fileinhalt als text in der Datumsspalte.
Gruß
Heinz
AW: Unterschiedliche Datumsformate
15.03.2010 14:15:03
Fred
Hallo Heinz,
das sieht schon gut aus. Ich kann dir nicht erklären, warum das beim Wizard nicht funktioniert.
Ich habe im Step 3 den entsprechenden Punkt angewählt, aber ohne den gewünschten Effekt.
Vielleicht liegt das ja am englischen Office ... ?
Mit diesem Makro komme ich jetzt schon weiter.
@Detlef: Ich würde mir deine Lösung aber auch noch gerne anschauen (wenn das Problem mit dem Compile error gelöst ist.
Vielen Dank für die klasse und schnelle Hilfe!
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige