Inkonsistente Ausgabe für leere Spalten in einer CSV-Datei (Microsoft Excel)
Mark bemerkte beim Erstellen von CSV-Dateien mit Excel etwas Seltsames: Die Dateien sind nicht immer konsistent darin, wie sie jede Zeile in den Ausgabedaten beenden. Als er eine CSV-Datei mit möglicherweise 70 Datenfeldern (Spalten) erstellt und dann die CSV-Datei in einem Texteditor anzeigt, stellt er fest, dass alle Datensätze Wagenrückläufe enthalten, jedoch an verschiedenen Stellen. Einige Datensätze haben eine Folge von Kommas, die leere Felder darstellen, und enden dann an der ‚richtigen‘ Stelle. andere enden direkt nach der zuletzt ausgefüllten Spalte; Einige haben ein paar Kommas, aber nicht genug für alle leeren Felder. Mark fragte sich, warum dies geschieht und wie er die CSV-Dateien dazu bringen kann, eine konsistente Anzahl von Ausgabefeldern zu enthalten.
Eine relativ einfache Möglichkeit, das Problem zu umgehen, besteht darin, ein vollständig ausgefülltes „Dummy“ -Feld in Ihre Daten aufzunehmen, bevor Sie es als CSV speichern. Wenn Ihre Tabelle beispielsweise 70 Spalten enthält, geben Sie in Zelle A71 einen Punkt ein. Kopieren Sie den Inhalt dieser Zelle für so viele Zeilen wie in der Tabelle nach unten. Wenn Sie das Arbeitsblatt dann in CSV exportieren, enthält Excel das Dummy-Feld, vor allem aber die richtige Anzahl von Feldtrennzeichen (Kommas) vor diesem letzten Feld in jedem Datensatz.
Wenn Sie das Dummy-Feld nicht möchten, können Sie Folgendes versuchen:
-
Wählen Sie eine der Zellen in Ihrer Kopfzeile aus.
-
Drücken Sie Umschalt + Strg + 8. Die gesamte Datentabelle wird ausgewählt.
-
Drücken Sie Strg + H, um die Registerkarte Ersetzen des Dialogfelds Suchen und Ersetzen anzuzeigen. (Siehe Abbildung 1.)
-
Stellen Sie sicher, dass das Feld Suchen nach vollständig leer ist.
-
Geben Sie im Feld Ersetzen durch ein einzelnes Leerzeichen ein.
-
Klicken Sie auf Alle ersetzen. Excel sollte Ihnen mitteilen, wie viele Ersetzungen vorgenommen wurden.
Diese Schritte ersetzen alle leeren Zellen durch Zellen, die ein einzelnes Leerzeichen enthalten. Sie können dann den Export in CSV durchführen und die richtige Anzahl von Feldern wird für jede einzelne Zeile exportiert.
Wenn Sie routinemäßig große Tabellen in das CSV-Format exportieren, möchten Sie möglicherweise ein Makro erstellen, das die Dateierstellung für Sie übernimmt. Das Folgende ist nur ein Beispiel für den Makrotyp, den Sie verwenden können:
Sub CreateCSV() Dim wkb As Workbook Dim wks As Worksheet Dim wksOri As Worksheet Dim iCols As Integer Dim lRow As Long Dim iCol As Integer Dim lRows As Long Dim sFilename As String Application.ScreenUpdating = False sFilename = "C:\test.csv" Set wksOri = ActiveSheet iCols = wksOri.Cells. _ SpecialCells(xlCellTypeLastCell).Column lRows = wksOri.Cells. _ SpecialCells(xlCellTypeLastCell).Row Set wkb = Workbooks.Add Set wks = wkb.Worksheets(1) For lRow = 1 To lRows For iCol = 1 To iCols With wks.Cells(lRow, 1) If iCol = 1 Then .Value = wksOri.Cells(lRow, iCol).Text Else .Value = .Value & "," & _ wksOri.Cells(lRow, iCol).Text End If End With Next Next Application.DisplayAlerts = False wkb.SaveAs FileName:=sFilename, _ FileFormat:=xlCSV wkb.Close Application.DisplayAlerts = True wksOri.Parent.Activate Application.ScreenUpdating = True MsgBox sFilename & " saved" Set wks = Nothing Set wkb = Nothing Set wksOri = Nothing End Sub
Das Makro erstellt eine brandneue Arbeitsmappe und „kompiliert“ dann in Spalte A des ersten Arbeitsblatts der Arbeitsmappe die Informationen aus dem ursprünglichen Arbeitsblatt. Diese Daten, die ein Trennzeichen für jedes einzelne Feld im Original enthalten, werden dann als CSV-Datei gespeichert. Schließlich wird die temporäre Arbeitsmappe gelöscht.
Der Pfad und der Dateiname der CSV sind fest im Code (der Variablen sFileName) codiert. Sie können jedoch so geändert werden, dass der Code bei Bedarf nach einem Dateinamen fragt.
ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.
Dieser Tipp (3068) gilt für Microsoft Excel 97, 2000, 2002 und 2003.