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

Forumthread: Zeilen mit Bedingung löschen per VBA

Zeilen mit Bedingung löschen per VBA
20.06.2021 11:32:40
Ingo
Hallo
Ich habe hier ein Makro. Damit sollen alle Zeilen gelöscht werden, bei denen in Spalte C,D,E und F der Wert 0 ist. (also nicht ODER sondern UND).

Sub Bereinigen()
' Zeilen löschen bei denen in Spalte C,D,E und F der Wert "0" ist
'** Ermittlung der letzten Zeile in Spalte A
lz = Cells(Rows.Count, 1).End(xlUp).Rows.Row
'** Durchlauf aller Zeilen
For t = lz To 2 Step -1 'Zählung rückwärts bis Zeile 2
'Abfragen, ob in Spalte 3,4,5 und 6 der Wert "0" ist
If Cells(t, 3).Value = "0" And Cells(t, 4).Value = "0" And Cells(t, 5).Value = "0" And Cells(t, 6).Value = "0" Then
Rows(t).Delete Shift:=xlUp
End If
Next t
End Sub
Das Makro habe ich nicht selbst geschrieben. Dafür reichen meine Kenntnisse in VBA leider nicht aus. Ich habe es per Google gefunden und etwas angepasst.
Die Tabelle, in der ich das anwenden möchte, hat ca. 20.000 Zeilen. Und da dauert die Ausführen schon eine Weile (so ca. 10-20 Sekunden, denke ich). Das liegst doch sicher an der Schleife, die ja jede Zeile einzeln durchgeht, oder?
Lässt sich das irgendwie besser machen, so dass die Ausführen des Mokros wesentlich schneller geht?
Gruß
Ingo
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Zeilen mit Bedingung löschen per VBA
20.06.2021 12:04:44
GerdL
Moin Ingo!

Sub Unit()
Dim rngDel As Range, lz As Long, t As Long
' Zeilen löschen bei denen in Spalte C,D,E und F der Wert "0" ist
'** Ermittlung der letzten Zeile in Spalte A
lz = Cells(Rows.Count, 1).End(xlUp).Row
'** Durchlauf aller Zeilen
For t = lz To 2 Step -1 'Zählung rückwärts bis Zeile 2
'Abfragen, ob in Spalte 3,4,5 und 6 der Wert "0" ist
If Cells(t, 3).Value = "0" And Cells(t, 4).Value = "0" And Cells(t, 5).Value = "0" And Cells(t, 6).Value = "0" Then
If rngDel Is Nothing Then
Set rngDel = Cells(t, 1)
Else
Set rngDel = Union(Cells(t, 1), rngDel)
End If
End If
Next
If Not rngDel Is Nothing Then
rngDel.EntireRow.Delete
Set rngDel = Nothing
End If
End Sub
Gruß Gerd
Anzeige
AW: Zeilen mit Bedingung löschen per VBA
20.06.2021 12:11:47
Ingo
Hallo Gerd
Wunderbar. Funktioniert blitzschnell jetzt. Ich danke Dir sehr!
Gruß
Ingo
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige