Zeile löschen, wenn nicht bestimmter Wert vorhande

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Zeile löschen, wenn nicht bestimmter Wert vorhande
von: Gavri
Geschrieben am: 11.11.2015 13:42:33

Hallo zusammen,
ich habe eine Tabelle mit ca. 58 - 63 Tsd Zeilen. Es sollen alle Zeilen gelöscht werden, die nicht "FRA" in Spalte S stehen haben.
Ich habe folgenden Code im Internet gefunden, damit dauert es sehr lange. Kann man diesen beschleunigen?
Dim i As Long
Dim letzteZeile As Long
letzteZeile = Range("B65536").End(xlUp).Row
For i = letzteZeile To 2 Step -1
If Cells(i, 19).Value <> "FRA" Then
Rows(i).Delete Shift:=xlUp
End If
Next i

Bild

Betrifft: AW: Zeile löschen, wenn nicht bestimmter Wert vorhande
von: Sepp
Geschrieben am: 11.11.2015 14:14:32
Hallo Gavri,
warum nicht einfach auf < > FRA Filtern und die Zeilen löschen?

Gruß Sepp


Bild

Betrifft: AW: Zeile löschen, wenn nicht bestimmter Wert vorhande
von: Michael
Geschrieben am: 11.11.2015 14:14:40
Hi Gavri,
sortiere die Daten zuerst nach der Spalte S (und evtl. einer weiteren), dann kannst Du alle Zeilen ohne "FRA" in einem (bzw. zwei) Rutsch(en) rauslöschen.
Wenn die ursprüngliche Sortierung wichtig für Dich ist oder anderweitig nicht mehr hergestellt werden kann, legst Du "rechts außen" noch eine Hilfsspalte an, die mit 1 bis ca. 60000 durchnummeriert ist - nach dem Löschen der Zeilen kannst Du dann noch einmal nach der Hilfsspalte sortieren, dann ist sie wie zuvor.
Excel sortiert sehr schnell, d.h. die ganze Geschichte sollte in 1, 2 Sekunden erledigt sein.
Wenn Du eine abgespeckte, anonymisierte Beispieldatei hochlädst, kann ich Dir die Funktion einbauen.
Wenn Du verstehen willst, was passiert, kannst Du die Geschichte auch mal händisch machen und mit dem Makrorekorder aufzeichnen.
Schöne Grüße,
Michael

Bild

Betrifft: AW: Zeile löschen, wenn nicht bestimmter Wert vorh
von: Gavri
Geschrieben am: 11.11.2015 15:14:59
Hallo Sepp,
entweder ich verstehe dich grade nicht oder du mich.
Wenn ich nach FRA Filter, dann kann ich doch nur diese löschen, aber FRA will ich behalten und die anderen löschen
@Michael
mit dem sortieren habe ich gemacht. Es ist auch deutlich schneller, aber dauert immer noch ca 2,5 Minuten. Gibt es noch eine andere Möglichkeit die Abarbeitung zu beschleunigen.
Gruß
Gavri

Bild

Betrifft: Sag ich doch: bitte Datei owT
von: Michael
Geschrieben am: 11.11.2015 15:24:03


Bild

Betrifft: AW: Sag ich doch: bitte Datei owT
von: Gavri
Geschrieben am: 11.11.2015 15:43:16
Hallo Michael,
anbei eine kleine Beispieldatei.
https://www.herber.de/bbs/user/101416.xlsx
Gruß
Gavri

Bild

Betrifft: na also!
von: Michael
Geschrieben am: 11.11.2015 16:12:32
Hi Gavri,
ich habe den Autofilter abgeschaltet, die Spalte S sortiert und das folgende Makro gestartet:

Sub rausMit()
Dim i As Long
Dim letzteZeile As Long, ab As Long, bis As Long, erster As Long
Dim c As Range
letzteZeile = Range("S" & Rows.Count).End(xlUp).Row
' hier ggf. Code zum Sortieren einfügen
With ActiveSheet.Range("S2:S" & letzteZeile)
Set c = .Find("FRA")
If Not c Is Nothing Then
  'MsgBox c.Row
  ab = c.Row
  erster = ab
  Set c = .FindPrevious(c)
'  MsgBox c.Row
  If c.Row > ab Then
    ab = c.Row + 1
    Rows(ab & ":" & letzteZeile).Delete Shift:=xlUp
  End If
  If erster > 2 Then
    Rows("2:" & erster - 1).Delete Shift:=xlUp
  End If
End If
End With
End Sub

Spürbare Zeit: 0, bei immerhin knapp 1000 Datensätzen.
Schöne Grüße,
Michael

Bild

Betrifft: AW: na also!
von: Gavri
Geschrieben am: 11.11.2015 17:08:06
Hallo Michael,
das funktioniert echt super schnell.
Vielen Dank und noch eine schöne Woche
Gruß
Gavri

Bild

Betrifft: so musses sein, danke für die Rückmeldung
von: Michael
Geschrieben am: 11.11.2015 17:41:43
und auch ne schöne Woche,
happy exceling,
Michael

Bild

Betrifft: AW: Zeile löschen, wenn nicht bestimmter Wert vorh
von: EtoPHG
Geschrieben am: 11.11.2015 15:39:21
Hallo Gavri,
Bei Excel gut sollte man wissen, dass man auch nach IST NICHT GLEICH filtern kann. Genau das hat Sepp mit <> gemeint!
Gruess Hansueli

Bild

Betrifft: AW: Zeile löschen, wenn nicht bestimmter Wert vorh
von: Gavri
Geschrieben am: 11.11.2015 17:09:52
Hallo Hansueli,
die Methode habe ich getestet. Ist aber auch deutlich langsamer als die vom Michael.
Vielen Dank für die Unterstützung an alle.
Gruß
Gavri

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Zeile löschen, wenn nicht bestimmter Wert vorhande"