Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Textdateien schnell durchsuchen

Forumthread: Textdateien schnell durchsuchen

Textdateien schnell durchsuchen
29.08.2013 16:36:11
Ben
Hallo zusammen,
ich habe folgendes Problem und benötige euer Fachwissen:
Ich habe eine .txt-Datei (TAB-getrennt; bis zu 500.000 Zeilen lang / 80MB groß). In dieser .txt-Datei möchte ich einen Datum-Uhrzeit-String / -Bereich finden und die dazugehörige Zeile komplett kopieren und in Excel einfügen.
Das war ja noch leicht :-)
Im Moment wird die Datei Zeilenweise eingelesen, die Zeile per Split auseinander genommen und der Wert verglichen - wenn er stimmt wird die Zeile kopiert.
Dieser Schleifendurchlauf (siehe unten) funktioniert einwandfrei - da ich aber nun einen gewissen "Zeitbereich" (+/- 10 Sekunden der Suchvariable) aus der Datei rausholen muss läuft die Schleife sehr häufig durch... d.h. wenn mein Zeitbereich am Ende der Datei liegt prüft er im schlimmsten Fall 450.000 Zeilen umsonst - und das dauert...
Ich suche nach einer Lösung die das schnell kann.
Hier ein Ausschnitt der .txt-Datei:
https://www.herber.de/bbs/user/87088.txt

Do While Zeit_Var  Zeit_Var Then GoTo zeit_zu_gross 'Zeit in eingelesener Zeile ist
'größer als gesuchte Zeit
If S_Ergebnis(1) 

Ich hoffe ihr könnt mir helfen. Vielen Dank.

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Textdateien schnell durchsuchen
29.08.2013 18:29:46
fcs
Hallo Ben,
Hallo Ben,
bau dein Makro in die folgende Richtung um, dann muss die Textdatei nur einmal abgearbeitet werden.
Gruß
Franz
'Option Explicit
'Variante mit Vergleich der in Zeiten umgewandelten Textstrings
Sub Import_Data()
'Testdaten
Zeit_Var = VBA.CDate("2013-06-16 18:34:13")
Zeit_Ende = VBA.CDate("2013-06-16 18:34:22")
sFile = "D:\Test\DatFile87088.txt"
i = 2
Application.ScreenUpdating = False
iFile = FreeFile()
Open sFile For Input As iFile
Do Until EOF(iFile)
Line Input #iFile, sTxt                 'Zeile einlesen
sTxt_Neu = Replace(sTxt, Chr(34), "")   'entfernt aus der Zeile die "
S_Ergebnis = Split(sTxt_Neu, vbTab)     'Split mit Tabulator
If S_Ergebnis(1) = "TimeString" Then GoTo n_Zeile   'kleine Hilfe damit erste Zeile
datErgebnis = CDate(S_Ergebnis(1))
If datErgebnis >= Zeit_Var And datErgebnis = Zeit_Var And S_Ergebnis(1) 

Anzeige
AW: Textdateien schnell durchsuchen
30.08.2013 10:14:03
Ben
Wieder was gelernt.
Die aktuelle Durchlaufzeit von 16 .txt-Dateien mit einer Gesamtgröße von 1,2GB inkl. aufteilen auf verschiedene Arbeitsblätter, Sortierung, Auswertung usw. 1:24 Minuten !!!! GENIAL !!!
Ich freu mich riesig.
Vielen Dank! Die Lösung liegt manchmal so nah...
Gruß Ben
Anzeige
Anzeige
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18