14.11.2017, 19:27
Meine lieben Freunde
Ich habe ein Problem, das mich nicht loslässt. In riesigen Dateien (200'000 bis 500'000 Zeilen) muss ich Zeilen löschen, die einen bestimmten Eintrag (Beurteilung = OK) in einer Spalte haben. Ich wollte eigentlich alle Zeilen mit dem Kriterium selektieren oder filtern und dann alle miteinander löschen. Aber ich habe das nicht hingekriegt. Die Vorgehensweisen in den schlauen Büchern und in Excel-Foren funktionieren alle nicht. :22:
Damit es wenigstens funktioniert, gehe ich nun zu Fuss und lösche jede Zeile einzeln. Da mehrere Zeilen immer zusammengehören und der wesentliche Eintrag auf der 1. Zeile des Blocks gemacht wird und dann nach unten übernommen wird, muss ich die Zeilen von unten her löschen. Der Prozess so dauert aber eeeewig und mir schläft das Gesicht ein dabei.
Der Code (Ausschnitt) sieht folgendermassen aus:
Ein kleines Beispiel habe ich beigefügt. Es geht um die Spalte T, in der der zu suchende Text ist.
BeispMedDaten.xlsx (Größe: 22,77 KB / Downloads: 5)
Kann mir jemand helfen? Vielen Dank im Voraus.
Viele Grüsse aus der kalten Schweiz
Rodlof
Ich habe ein Problem, das mich nicht loslässt. In riesigen Dateien (200'000 bis 500'000 Zeilen) muss ich Zeilen löschen, die einen bestimmten Eintrag (Beurteilung = OK) in einer Spalte haben. Ich wollte eigentlich alle Zeilen mit dem Kriterium selektieren oder filtern und dann alle miteinander löschen. Aber ich habe das nicht hingekriegt. Die Vorgehensweisen in den schlauen Büchern und in Excel-Foren funktionieren alle nicht. :22:
Damit es wenigstens funktioniert, gehe ich nun zu Fuss und lösche jede Zeile einzeln. Da mehrere Zeilen immer zusammengehören und der wesentliche Eintrag auf der 1. Zeile des Blocks gemacht wird und dann nach unten übernommen wird, muss ich die Zeilen von unten her löschen. Der Prozess so dauert aber eeeewig und mir schläft das Gesicht ein dabei.
Der Code (Ausschnitt) sieht folgendermassen aus:
Code:
Dim ErsteZeile As Integer 'Die erste Zeile mit Daten (ohne Header)
Dim LetzteZeile As Long 'Die Letzte Zeile mit Daten in einem Bereich (muss long sein)
Dim SpalteX As Integer 'Die Spalte mit der Beurteilung
Dim Text1 As String 'Erster Text der geprüft werden soll
Dim Text2 As String 'Zweiter Text der geprüft werden soll
Dim Text3 As String 'Dritter Text der geprüft werden soll
Dim i As Long 'Schlaufenzähler (muss long sein)
Text1 = "OK 1 N/K" 'Erster Suchtext setzen
Text2 = "OK 2 gesamt" 'Zweiter Suchtext setzen
Text3 = "OK 9 SPLG Def" 'Dritter Suchtext setzen
'Zeilen mit OK1, OK2, OK9 löschen (mit Einzelmethode rückwärts)
'**************************************************************
For i = LetzteZeile To ErsteZeile + 1 Step -1 'Schlaufe rückwärts setzen (erste Zeile nicht löschen)
ActiveWorkbook.ActiveSheet.Cells(i, SpalteX).Select
If ActiveCell.Value = Text1 Then 'Wenn BeU = OK1, die ganze Zeile löschen
Selection.EntireRow.Delete
ElseIf ActiveCell.Value = Text2 Then 'Wenn BeU = OK2, die ganze Zeile löschen
Selection.EntireRow.Delete
ElseIf ActiveCell.Value = Text3 Then 'Wenn BeU = OK9, die ganze Zeile löschen
Selection.EntireRow.Delete
Else 'du nösing (nächste Zeile ohne löschen)
End If
Next i
Ein kleines Beispiel habe ich beigefügt. Es geht um die Spalte T, in der der zu suchende Text ist.

Kann mir jemand helfen? Vielen Dank im Voraus.
Viele Grüsse aus der kalten Schweiz
Rodlof