Anzeige
Archiv - Navigation
1832to1836
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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

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

322 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige