Ole hatte ein Problem beim Importieren von Informationen in eine Excel-Arbeitsmappe. Es scheint, dass die Dateien, die er importieren muss, normalerweise Tausende und Abertausende von Datensätzen enthalten. Ole benötigt jedoch die meisten Eingabezeilen nicht und entfernt sie normalerweise, sobald die Datensätze in Excel importiert wurden. Ole sucht nach einer Möglichkeit, die unerwünschten Datensätze während des Importvorgangs zu entfernen, damit er weniger Arbeit hat, wenn sich die Daten in seiner Arbeitsmappe befinden.

Es gibt verschiedene Möglichkeiten, wie eine Lösung für dieses Problem gefunden werden kann. Eine Lösung besteht darin, Access als ersten Importschritt zu verwenden. Access kann problemlos die Tausenden von Datensätzen verarbeiten, die Sie importieren möchten – selbst wenn mehr Datensätze vorhanden sind, als Sie in Excel importieren können. Sie können die Datei in Access importieren, unerwünschte Datensätze herausfiltern und die resultierende Tabelle dann als Excel-Arbeitsmappe exportieren.

Die beste Lösung könnte jedoch darin bestehen, die Importfilter von Excel vollständig zu umgehen. Sie können problemlos eine Importroutine in VBA schreiben und die Verarbeitung der Importdatei zulassen. Betrachten Sie beispielsweise das folgende Makro:

Sub Import()

Dim sFile As String     Dim sUnwanted As String     Dim sDelim As String     Dim iRow As Integer     Dim iCol As Integer     Dim bBadRecord As Boolean     Dim iTemp As Integer

sFile = "d:\data.txt"

sUnwanted = "bad text"

sDelim = ","



Open sFile For Input As #1

iRow = 1     While Not EOF(1) 'Scan file line by line         iCol = 1         Line Input #1, sBuffer

' Check to see if should ignore record         bBadRecord = Instr(sBuffer, sUnwanted)



If Not bBadRecord Then             iTemp = Instr(sBuffer, sDelim)

While iTemp > 0                 With Application.Cells(iRow, iCol)

.NumberFormat = "@" 'Text formatting                     .Value = Left(sBuffer, iTemp-1)

End With                 iCol = iCol + 1                 sBuffer = Mid(sBuffer, iTemp+1, Len(sBuffer))

iTemp = Instr(sBuffer, sDelim)

Wend             If Len(sBuffer) > 0 Then                 With Application.Cells(iRow, iCol)

.NumberFormat = "@" 'Text formatting                     .Value = sBuffer                 End With             End If             iRow = iRow + 1         End If     Wend     Close #1 End Sub

Dieses Makro öffnet eine Datendatei und liest jeden Datensatz in der Datei. Es überprüft den Datensatz, um sicherzustellen, dass der Import in Ordnung ist, zieht ihn dann basierend auf einem Trennzeichen auseinander und fügt die Informationen in das aktuelle Arbeitsblatt ein. Sie können den Namen der Datendatei (die sFile-Variable), den Text, der auf einen fehlerhaften Datensatz hinweist (sUnwanted-Variable), und das Trennzeichen (sDelim-Variable) ändern.

Angenommen, Sie haben eine Datendatei mit dem Namen Customers.txt. Diese Datei enthält alle Ihre Kundendatensätze, Sie möchten jedoch keine Datensätze für Kunden mit Adressen innerhalb der USA importieren. Ferner verwenden die Datensätze in der Datendatei ein Tabulatorzeichen zwischen jedem Feld. In diesem Fall müssten Sie nur die folgenden Änderungen an den Variablen am Anfang des Makros vornehmen:

sFile = "d:\Customers.txt"

sUnwanted = "United States"

sDelim = Chr(9)

Sobald Sie das Makro ausgeführt haben, enthält das aktuelle Arbeitsblatt nur die gewünschten Daten.

_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 (2239) gilt für Microsoft Excel 97, 2000, 2002 und 2003. Eine Version dieses Tipps für die Multifunktionsleistenschnittstelle von Excel (Excel 2007 und höher) finden Sie hier: