Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zeilen in TXT löschen, Datenreduktion

Zeilen in TXT löschen, Datenreduktion
07.05.2009 17:57:42
Röfu
Hallo,
ich habe eine Textdatei mit mehreren Spalten mit bis zu 120'000 Zeilen. Beispiel 1. und 2. Zeile, danach alle Werte wie 2. Zeile:
Datum Zeit relative Zeit Soll [°C] Intern [°C] Extern [°C] Leistung [%]
20.04.2009 13:22:51 00:00:00 40.000000 31.610001 24.490000 100.000000
Aufgrund der zu grossen Anzahl zeilen suche ich eine Möglichkeit, entweder nur jede z.B. 20. Zeile der Textdatei ins Excel einzulesen oder ansonsten im Textfile jeweils 19 Zeilen zu löschen, 1 stehen lassen, 19 Zeilen löschen, ...
Bei Excel ist ja bei gut 60'000 Zeilen Schluss. Weniger Daten sind in meinem Fall nicht schlimm. Wir haben ein Aufzeichnugnsgerät und können die Abtastrate leider nicht verstellen!
Wäre für einen Lösungsvorschlag dankbar ;-))
Vielen Dank für Rückmeldungen im Voraus
Röfu

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Quick und Dirty
07.05.2009 19:49:09
Ramses
Hallo
Ungetestet, aber probier mal
Option Explicit

Sub Read_Extern_file_in_Steps()
    'Hilfsvariable für Anzahl Datensätze
    Dim Text1 As String
    'Variablen für den Array nötig
    Dim TxtLines As Long, i As Long, readStep As Long
    Dim TextArr As Variant
    'Sprungweite einstellen
    readStep = 20
    'Schliessen einer geöffneten Datei
    Close #1
    '1. Öffnen der Datei
    'Den Namen und Pfad bitte anpassen
    Open "c:\DeineDatei.txt" For Input As #1
    'Die anzahl ist nötig um die Grösse des Arrays zu deklarieren
    'Zähler auf 0 setzen
    TxtLines = 0
    Do While Not EOF(1) ' Schleife bis Dateiende.
        Input #1, Text1 ' Hilfsvariable zum einlesen verwenden
        ' Zähler hochzählen
        TxtLines = TxtLines + 1
    Loop
    'Schliessen der Datei weil Dateiende erreicht wurde
    Close #1
    'Erneutes Öffnen um zum Dateianfang zu kommen
    Open "c:\DeineDatei.txt" For Input As #1 ' Datei zum Einlesen öffnen.
    'Array neu auf die Anzahl der Linien initialisieren
    ReDim TextArr(TxtLines)
    Close #1
    'Einlesen der Dateien in das Array
    Cells(1, 1) = TextArr(1)
    For i = 2 To TxtLines Step readStep
        Cells(i, 1) = TextArr(i)
    Next i
End Sub

Gruss Rainer
Anzeige
AW: Zeilen in TXT löschen, Datenreduktion
07.05.2009 20:07:11
Uduuh
Hallo,
meine Version:

Sub tttt()
Dim i As Integer, n As Long, strTmp As String, arrDaten(), k As Integer
Dim iFile As Integer
Const strDatei = "c:\test\test.txt"
iFile = FreeFile
Open strDatei For Input As iFile
Do While Not EOF(iFile)
n = n + 1
Loop
Close #iFile
ReDim arrDaten(1 To n, 1 To 7)
n = 0
Open strDatei For Input As iFile
Do While Not EOF(iFile)
Line Input #iFile, strTmp
n = n + 1
For i = 1 To 7
arrDaten(n, i) = Split(strTmp, vbTab)(i - 1)
Next
For k = 1 To 19 'Zeilen überspringen
If EOF(iFile) Then
Exit Do
Else
Line Input #iFile, strTmp
End If
Next
Loop
Close #iFile
Sheets(1).Cells(1, 1).Resize(n, 7) = arrDaten
End Sub


Gruß aus’m Pott
Udo

Anzeige
AW: Zeilen in TXT löschen, Datenreduktion
08.05.2009 08:40:47
Rolf
Hallo Ramses,
vielen Dank für die Hilfe. Leider bekomme ich den Laufzeitfehler 1004!
Und zwar bei fast beim Ende des Codes:
For i = 2 To TxtLines Step readStep
Cells(i, 1) = TextArr(i) 'hier Laufzeitfehler 1004
Next i
Habe zu wenig Kenntnisse, um eine entspr. Anpassung machen zu können. Könntest Du mir evtl. weiter helfen? Zusätzlich ist es so, dass die txt Datei im selben Verzeichnis liegt wie das Workbook. Das heisst, ich würde auf die Pfadangabe des txt gerne verzichten und auf Variante Thisworkbook.path ... wechseln.
Ach ja, hatte ich noch vergessen. Die erste Zeile (Kopfzeile mit Parameterbeschrieb) des txt soll auch übertragen werden, danach lediglich noch jede 20. Zeile.
Freue mich bereits auf eine Antwort!
Gruss
Rolf
===============
Hallo Uduuh,
beim Ausführen Deines Codes schmiert mein Excel leider ab und dann hilft nur noch der Task-Manager!
Konnte leider nicht feststellen, woran es liegt. Evtl. hast Du ja eine Idee.
Vielen Dank vorerst.
Rolf
Anzeige
ein paar Ergänzungen + Korrekturen
08.05.2009 08:57:53
Erich
Hi Rolf,
hier beide Varianten - nicht bildschön, aber wohl lauffähig:

Option Explicit
Sub Read_Extern_file_in_Steps2()
Dim Text1 As String
Dim TxtLines As Long, i As Long, readStep As Long, zz As Long
Dim TextArr As Variant
Const strDatei = "\txttest.txt"
readStep = 20
Close #1
Open ThisWorkbook.Path & strDatei For Input As #1
TxtLines = 0
Do While Not EOF(1) ' Schleife bis Dateiende.
Input #1, Text1 ' Hilfsvariable zum einlesen verwenden
TxtLines = TxtLines + 1
Loop
Close #1
'Erneutes Öffnen um zum Dateianfang zu kommen
Open ThisWorkbook.Path & strDatei For Input As #1 ' Datei zum Einlesen öffnen.
ReDim TextArr(TxtLines)
Do While Not EOF(1) ' Schleife bis Dateiende.
Input #1, Text1
TextArr(i) = Text1 ' Hilfsvariable zum einlesen verwenden
i = i + 1
Loop
Close #1
Cells(1, 1) = TextArr(0)
zz = 1
For i = 1 To TxtLines Step readStep
zz = zz + 1
Cells(zz, 1) = TextArr(i)
Next i
End Sub
Sub tttt2()
Dim i As Integer, n As Long, strTmp As String, arrDaten(), k As Integer
Dim iFile As Integer
Const strDatei = "\txttest.txt"
iFile = FreeFile
Open ThisWorkbook.Path & strDatei For Input As iFile
Do While Not EOF(iFile)
Line Input #iFile, strTmp
n = n + 1
Loop
Close #iFile
ReDim arrDaten(1 To n, 1 To 7)
n = 0
Open ThisWorkbook.Path & strDatei For Input As iFile
Line Input #iFile, strTmp
n = n + 1
For i = 1 To 7
arrDaten(n, i) = Split(strTmp, vbTab)(i - 1)
Next
Do While Not EOF(iFile)
Line Input #iFile, strTmp
n = n + 1
For i = 1 To 7
arrDaten(n, i) = Split(strTmp, vbTab)(i - 1)
Next
For k = 1 To 19 'Zeilen überspringen
If Not EOF(iFile) Then Line Input #iFile, strTmp
Next
Loop
Close #iFile
Sheets(1).Cells(1, 1).Resize(n, 7) = arrDaten
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: ein paar Ergänzungen + Korrekturen
08.05.2009 16:53:05
Rolf
Hallo Erich!
Vielen Dank für die prompte Lösung! Variante 2 funktioniert perfekt!
Bei der ersten Variante werden die Spalten nicht getrennt und zusammen in Spalte A eingetragen.
An dieser Stelle möchte ich eine echtes Lob an dieses Forum aussprechen!!! Meine aktuelles Problem ist gelöst.
Vielen Dank nochmals für Eure Hilfe und schönen Gruss
Rolf
AW: ein paar Ergänzungen + Korrekturen
08.05.2009 17:18:55
Ramses
Hallo
Bei EXCEL Gut gehe ich davon aus, dass du weisst wie man das trennen kann.
Daten - Text in Spalten
Gruss Rainer
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen
Forumthread
Beiträge