Importieren großer Datendateien (Microsoft Excel)
In Excel ist die Anzahl der Zeilen in einem Arbeitsblatt begrenzt – bis zu 65.535. Es ist jedoch sehr gut möglich, eine Rohdatendatei zu haben, die mehr als diese Anzahl von Zeilen enthält. Wenn Sie diese Datei in Excel importieren müssen, kann dies ohne ein Upgrade auf Excel 2007 oder eine spätere Version fast unmöglich erscheinen. (Diese späteren Versionen haben das Zeilenlimit von 65.535 überschritten.) Sie können jedoch einige Dinge tun.
Eine Möglichkeit besteht darin, Kopien der Rohtextdatei (die Sie importieren möchten) zu erstellen und dann die Größe jeder Datei zu verringern. Wenn Sie beispielsweise insgesamt 110.000 Zeilen haben, die Sie in Excel importieren müssen, und unter der Grenze von 65.535 Zeilen arbeiten, können Sie zwei Kopien der Rohtextdatei erstellen. Löschen Sie die zweite Hälfte der ersten Textdatei und die erste Hälfte der zweiten. Auf diese Weise können Sie die erste Datei (jetzt 55.000 Zeilen) in ein Arbeitsblatt und die zweite Datei (ebenfalls 55.000 Zeilen)
importieren in die zweite.
Wenn Sie Ihre Eingabedateien nicht aufteilen möchten, können Sie die Datei in Access importieren. Im Gegensatz zu Excel ist die Anzahl der Zeilen, die Sie importieren können, in Access praktisch unbegrenzt. Sie können dann entweder mit der Datei in Access arbeiten oder Teile der Datei exportieren, um sie in Excel zu verwenden.
Schließlich können Sie ein Makro verwenden, um die Datensätze in die große Quelldatei zu importieren. Es gibt viele Möglichkeiten, dies zu tun, aber die Grundidee hinter jedem Ansatz besteht darin, jede Zeile aus der Quelldatei abzurufen und in einer neuen Zeile eines Arbeitsblatts zu platzieren. Das Makro muss verfolgen, wie viele Zeilen es platziert hat, und bei Bedarf zu einem neuen Arbeitsblatt wechseln.
Public Sub LoadFile() Dim strLine As String Dim I As Long Dim J As Long Dim iLen As Integer Dim iSh As Integer Dim lL As Long Dim sDelim As String Dim MaxSize As Long sDelim = Chr(9) MaxSize = 65000 I = 0 Open "C:\MyDir\MyFile.txt" For Input As #5 Do While Not EOF(5) iSh = (I / MaxSize) + 1 lL = I Mod MaxSize Line Input #5, strLine If Right(strLine, 1) <> sDelim Then strLine = Trim(strLine) & sDelim End If J = 0 Do While Len(strLine) > 1 iLen = InStr(strLine, sDelim) Worksheets("Sheet" & iSh).Offset(lL, J).Value = _ Trim(Left(strLine, iLen - 1)) strLine = Trim(Right(strLine, Len(strLine) - iLen)) J = J + 1 Loop I = I + 1 Loop Close #5 End Sub
Das Makro setzt voraus, dass Sie bereits genügend Arbeitsblätter in Ihrer Arbeitsmappe haben, um die Daten zu enthalten, und dass diese mit Sheet1, Sheet2, Sheet3 usw. nummeriert sind. Zwei Variablen, die Sie im Programm überprüfen möchten, sind die Einstellungen von sDelim und MaxSize. Das erste gibt an, welches Zeichen als Feldtrennzeichen in den gelesenen Informationen verwendet wird. Die zweite gibt die maximale Anzahl von Zeilen an, die in jedem Arbeitsblatt angezeigt werden sollen. (Stellen Sie MaxSize nicht größer ein, als es Ihre Excel-Version zulässt.)
Beachten Sie schließlich, dass das Makro die Textdatei MyFile.txt öffnet. Sie möchten diese Open-Anweisung so ändern, dass sie die echte Quelldatei öffnet, die Sie importieren möchten.
_Hinweis: _
Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.
ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.
Dieser Tipp (2533) gilt für Microsoft Excel 97, 2000, 2002 und 2003.