Anzeige
Archiv - Navigation
1780to1784
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

VBA Zeilen mit Kriterien entfernen

VBA Zeilen mit Kriterien entfernen
11.09.2020 11:10:22
Foradh
Hallo liebe Excelfreunde,
ich möchte aus einer Liste mittels VBA komplette Zeilen löschen in der in Spalte 13 ein x vorhanden ist.
Momentan hab ich das mit folgendem Code gelöst:
If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
[A1].AutoFilter Field:=13, Criteria1:="" 'Filtern nach x
[A1].Resize(Cells(Rows.Count, 1).End(xlUp).Row).Offset(1).EntireRow.Delete
ActiveSheet.AutoFilterMode = False
Problem hierbei ist, dass dieser Vorgang bei großen Listen extrem lange dauert.
Gibt es hier einen besseren Code der die Operation schneller durchführen kann?
Vielen Dank im Voraus.
Foradh

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

Betreff
Datum
Anwender
Anzeige
AW: VBA Zeilen mit Kriterien entfernen
11.09.2020 11:20:29
Rudi
Hallo,
wenn du erst nach x sortierst, sollte es erheblich schneller gehen.
Gruß
Rudi
AW: VBA Zeilen mit Kriterien entfernen
11.09.2020 11:26:55
Foradh
Hallo Rudi,
vielen Dank für die schnelle Rückmeldung.
Ich dachte ich sortiere mit dem Code zuerst nach x
[A1].AutoFilter Field:=13, Criteria1:=""
Kannst du mir sagen wie ich den Code abändern müsste?
Beste Grüße
Foradh
AW: VBA Zeilen mit Kriterien entfernen
11.09.2020 11:37:56
Rudi
damit sortierst du nicht, sondern du filterst.
AW: VBA Zeilen mit Kriterien entfernen
11.09.2020 11:38:57
Rudi
versuch mal:
Sub yyyy()
Dim rng As Range
With ActiveSheet
Set rng = .Cells(1, 1).CurrentRegion
If .FilterMode Then .ShowAllData
With .Sort
.SortFields.Clear
.SortFields.Add2 _
Key:=Range("M2"), _
SortOn:=xlSortOnValues, _
Order:=xlAscending, _
DataOption:=xlSortNormal
.SetRange rng
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Intersect(rng, rng.Offset(1)).Columns(13).SpecialCells(xlCellTypeConstants).EntireRow. _
Delete
End With
End Sub

Gruß
Rudi
Anzeige
AW: VBA Zeilen mit Kriterien entfernen - schnell!
11.09.2020 12:06:17
Daniel
Hi
wie schon oft von mir geschrieben:
das löschen Zeilen in großen Listen einfach und sehr schnell auch ohne Sortieren mit Hilfe der Funktion DATENT - DATENTOOLS - DUPLIKATE ENTFERNEN
hierzu kennzeichnet man mit einer Formel in einer Hilfsspalte alle Zeilen, die gelöscht werden sollen mit einem gleichen Wert (z.B. 0) und die Zeilen die stehen bleiben müssen mit einem individuellen Wert, bspw der Zeilennummer.
dann führt man das Duplikate-Entfernen aus.
Damit auch wirklich alle als Duplikat gekennzeichnete Zeilen gelöscht werden (die erste bleibt ja Funktionsbedingt stehen), sorgt man dafür, dass die Überschriftenzeile (die ja stehen bleiben muss), dieses erste Duplikat ist.
sieht als Code so aus:
with ActiveSheet.Usedrange
with .columns(.columns.count + 1)
.FormulaR1C1 = "=IF(RC13=""x"",0,Row())"
.Cells(1, 1).Value = 0
.EntireRow.Removeduplicates .Column, xlno
.ClearContents
end with
End with
noch schneller wäre höchstens folgendes, erfordert aber bei langen Listen ein sortieren um wirklich schnell zu sein:
Columns(13).Replace "x", true, xlwhole
activeSheet.UsedRange.Sort key1:=Cells(1, 13), order1:=xldescending, Header:=xlyes
if Cells(2, 13).value = True then .Columns(13).specialcells(xlcelltypeconstants, 4).EntireRow.Delete

ich bevorzuge allerdings die erste Methode als Standardmethode zum Löschen von Zeilen, weil sie einfacher und flexibler an andere Löschkriterenn angepasst werden kann (bspw darf die zweite Methode so nicht angewendet werden, wenn die betroffene Spalte WAHR oder FALSCH als reguläre Werte enthalten kann)
gruß Daniel
Anzeige
AW: VBA Zeilen mit Kriterien entfernen - schnell!
11.09.2020 13:13:52
Foradh
Hallo Daniel,
vielen Dank für die Erklärung und die Lösung. Die Berechnung dauert nun statt 15min nur noch 45sekunden.
In diesem Sinne, schönes Wochenende und nochmal vielen Dank.
Foradh

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige