Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1100to1104
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
Text in Spalten
MarioD
Hallo zusammen,
ich bekomme regelmäßig Daten in einer csv-Datei angeliefert.
Eine Datumsangabe hierin ist als TT.MM.JJJJ hh:mm angegeben.
Wenn ich die csv-Datei über Text in Spalten aufteile, ist die Spalte in der das Datum steht auch im Format TT.MM.JJJJ hh:mm formatiert und ich kann das Datum entsprechend weiterverarbeiten. Als Datenformat ist im Text-in-Spalten-Menü "Standard" gewählt.
Nutze ich mein aufgezeichnetes Makro, so ist die entsprechende Spalte hinterher als Standard definiert und ich kann das Datum nicht mehr weiterverarbeiten indem ich mich auf die entsprechende Zelle beziehe.
Klar gibt es Mittel und Wege das Datum wieder als Datum zu erhalten, aber warum ist das Ergebnis mal so und mal so?
Danke.
Beste Grüße Mario

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Text in Spalten
12.09.2009 23:33:25
Jürgen
Hallo Mario,
warum Dein Makro nicht so funktioniert wie Du es Dir wünscht, ist kaum zu erklären, wenn man das Makro nicht sieht. Vermutlich ist in dem Makro das Format für die Spalte nicht korrekt definiert.
Aber warum verwendest Du für den Import von Textdateien ein Makro? Schau Dir mal "Daten - Externe Daten importieren - Daten importieren an". Wenn Du den Import einmal definiert hast, kannst Du die nächste Datei importieren, indem Du per Rechtsklick in den Importbereich "Daten aktualisieren" aufrufst.
Gruß, Jürgen
AW: Text in Spalten
13.09.2009 10:19:19
MarioD
Hallo,
das Makro ist ganz einfach aufgezeichnet:
Range("A1").Select
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True
Ich habe nichts an den Formateinstellungen geändert, es steht alle auf Standard.
Wenn ich durchs Menü klicke funktioniert es, wenn ich das Makro starte nicht.
Daten importieren würde selbstverständlich funktionieren, jedoch bekomme ich die csv-Datei täglich per Mail und müsste sie so erst abspeichern. Da ist ein einfaches Öffnen des Anhangs und dann ein Text in Spalten meines Erachtens schneller(insbesondere wenn man dafür ein funktionierendes Makro hat...).
Mario
Anzeige
AW: Text in Spalten
13.09.2009 16:55:31
fcs
Hallo Mario,
das ist schon eine ewige Crux mit CSV-Dateien in Excel wenn die Sytemeinstellungen nicht Englisch-US sind.
Wenn alles sauber funktionieren würde, dann würde Excel die CSV-Datei schon korrekt mit den Daten in Spalten aufgeteilt öffnen.
Historisch sind CSV-Dateien Dateien in denen die Datenfelder durch Komma getrennt sind und das Format für Zahlen und Datum im US-Format angegeben ist. Verwendet man lokale Datenformate, dann gibt es Probleme.
Leider arbeitet Excel unter VBA nicht immer mit den lokalen Formaten, so dass Textinhalte beim Splitten nicht konvertiert oder bzgl. Dezimalstelle auch falsch umgesetzt werden. So funktioniert der Split in Spalten bei der manuellen Ausführung und beim Aufzeichnen korrekt, aber bei der Makroausführung werden die Daten dann im US-Format interpretiert. Das Ergebnis: Chaos.
Leider kann man auch nicht alle Parameter so einstellen, dass der Text bzgl. Datum + Zeit in einer Spalte nicht immer korrekt umgesetzt bzw. als Text interpretiert wird.
so werden die Angaben 01/01/2009 10:10:10 und 2000-01-01 10:10:10 korrekt erkannt, aber die deutsche Datumsschreibweise 01.01.2009 10:10:10 nicht. Da wird eine Zahl mit 2 Dezimalpunkten als Text interpretiert.
Nachfolgend eine ergänzung zu deinem Makro, dass im Nachlauf das Datum als Text in das Exceldatum umsetzt.
Gruß
Franz
Sub bbtest()
Dim Bereich As Range, Zelle As Range, Spalte As Long
Range("A1").Select
Set Bereich = Selection 'Zellbereich mit den zu splittenden Texten
Bereich.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 4), TrailingMinusNumbers:=True, DecimalSeparator:=",", _
ThousandsSeparator:="."
Spalte = 1 'Spalte mit dem Datum/Zeit - Hier Spalte A
Set Bereich = Range(Cells(1, Spalte), Cells(Rows.Count, Spalte).End(xlUp))
For Each Zelle In Bereich
With Zelle
If IsDate(.Value) Then .Value = CDate(.Text)
End With
Next
End Sub

Anzeige
AW: Text in Spalten
13.09.2009 19:24:58
MarioD
Hallo Franz,
dein Code funktioniert. Danke.
Das bedeutet aber, ich kann den Code nur speziell verwenden und nicht so allgemein, wie ich es erhofft hatte.
Nun denn, aber wieder was gelernt. :-)
Mario
AW: Text in Spalten
13.09.2009 23:36:45
fcs
Hallo Mario,
man kann schon was machen.
Das Hauptproblem ist dann die Spalte(n) variabel festzulegen bzw. zu suchen, in denen ein Datum steht.
Da kannst zum Beispiel problemlos die Aufteilung auf Spalten auf die jeweils selektierten Zellen einer Spalte anwenden.
Gruß
Franz
Sub aaTextinSpalten()
Dim Bereich As Range, Zelle As Range, Spalte As Long
On Error GoTo Fehler
Set Bereich = Selection 'Zellbereich mit den zu splittenden Texten
If Bereich.Columns.Count = 1 Then
Bereich.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True, DecimalSeparator:=",", _
ThousandsSeparator:="."
SpaltenAuswahl:
Set Zelle = Application.InputBox(Prompt:="Bitte Zelle in Spalte mit Datum selektieren", _
Title:="Text in Spalten - Spalten mit Datum/Zeit", _
Default:=ActiveCell.Address, Type:=8)
Spalte = Zelle.Column 'Spalte mit dem Datum/Zeit
Set Bereich = Range(Cells(1, Spalte), Cells(Rows.Count, Spalte).End(xlUp))
For Each Zelle In Bereich
With Zelle
If IsDate(.Value) Then .Value = CDate(.Text)
If Zelle.Row >= ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count Then
Exit For
End If
End With
Next
Columns(Spalte).AutoFit
'    Columns(Spalte).NumberFormat = "DD.MM.YYYY hh:mm:ss"
If MsgBox("Weitere Spalte mit Datum/Zeit?", vbYesNo + vbQuestion, _
"Text in Spalten - Spalten mit Datum/Zeit") = vbYes Then
GoTo SpaltenAuswahl
End If
Else
MsgBox "Für Funktion Text in Spalten dürfen nur " & _
"Zellen in einer Spalte selektiert werden!"
End If
Err.Clear
Fehler:
With Err
If .Number  0 Then
MsgBox "Fehler-Nr. " & .Number & vbLf & .Description
End If
End With
End Sub

Anzeige

350 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige