Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1760to1764
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 löschen = langsam

vba, Zeilen löschen = langsam
05.06.2020 15:56:24
Fred
Hallo Excel Profis,
ich möchte gerne jede Zeile löschen, in der in Spalte 51 kein Wert steht.
lz = Cells(Rows.Count, 1).End(xlUp).Rows.Row
For t = lz To 2 Step -1
If Cells(t, 51).Value = "" Then
Rows(t).Delete Shift:=xlUp
End If
Next t

Es klappt,- allerdings dauert es unglaublich lange (bei gesamt 2000 DS, wobei 1700 gelöscht werden solle)
Gibt es eine clevere vba-Lösung?
Gruss
Fred

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: vba, Zeilen löschen = langsam
05.06.2020 16:00:35
Hajo_Zi
Hallo Fred,
lösche alle mit einmal.
Option Explicit
Sub DoppelteWerte_löschen()
Application.ScreenUpdating = False
Application.EnableEvents = False
Dim RaZelle As Range
Dim IntRow As Long
Dim Start As Long
IntRow = IIf(IsEmpty(Cells(Rows.Count, 1)), _
Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
For Start = IntRow To 1 Step -1
If Not IsEmpty(Cells(Start, 1)) Then
If Application.CountIf(Range("A1:A" & Start), Cells(Start, 1)) > 1 Then
If RaZelle Is Nothing Then
Set RaZelle = Cells(Start, 1)
Else
Set RaZelle = Union(RaZelle, Cells(Start, 1))
End If
End If
End If
Next
If Not RaZelle Is Nothing Then RaZelle.ClearContents
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub

Anzeige
AW: vba, Zeilen löschen = langsam
05.06.2020 16:12:13
UweD
Hallo
so?

With ActiveSheet
If .AutoFilterMode Then .AutoFilterMode = False ' Autofilter ausschalten
.Columns(51).AutoFilter Field:=1, Criteria1:="="
Intersect(.Columns(51), .UsedRange).Offset(1, 0).SpecialCells(xlCellTypeVisible). _
EntireRow.Delete 'gefilterte Zeilen löschen
.AutoFilterMode = False ' Autofilter ausschalten
End With

AW: vba, Zeilen löschen = langsam
05.06.2020 16:20:33
Fred
Hallo UweD,
mit deinem Code geht das ratzfatz,- mein ursprünglicher "hing sich anscheinend immer wieder auf".
Das Makro von Hajo erzielte leider nicht das Ergebnis (löschte nur den Inhalt von Zellen,- bzw "dopplern")
Danke UweD
und schönes Wochenende
Gruss
Fred
Anzeige
Dazu braucht man eigentlich kein Makro
05.06.2020 16:12:21
Matthias
Hallo
Komplette Spalte markieren
F5 drücken
Inhalte
Leerzellen anwählen
Ok
Jetzt mit der rechten Maustaste Zellen löschen wählen
Ganze Zeile anwählen.
Oder als Makro:
Columns("AY:AY").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Gruß Matthias
AW: vba, Zeilen löschen = langsam
05.06.2020 16:22:34
Daniel
Hi
Zeilen einzeln löschen ist langsam.
Für Excel ist es der gleiche Aufwand, eine Zeile zu löschen oder 1000, sofern die Zeilen einen lückenlosen Block bilden.
Wenn die Zellen in Spalte 51 leer sind, so:
Columns(51).SpecialCells(xlcelltypeblanks).EntireRow.delete
Noch schneller gehts, wenn du vorher nach Spalte 51 sortierst.
Sollten die Zellen keine echten Leerzellen sein oder sortieren unerwünscht, dann bietet sich noch das Duplikate Entfernen an:
With ActiveSheet.usedrange
With .Columns(.Columns.Count + 1)
.FormulaR1C1 = "=If(RC51="""",0,Row())"
.Cells(1, 1).Value = 0
.EntireRow.RemoveDuplicates .Columns, xlno
.ClearContents
Ende With
Ende With
Gruß Daniel
Anzeige
AW: vba, Zeilen löschen = langsam
05.06.2020 16:25:38
Fred
Hallo Daniel,
dein und Matthias
Columns(51).SpecialCells(xlcelltypeblanks).EntireRow.delete
tut es prächtig.
Danke!
AW: vba, Zeilen löschen = langsam
05.06.2020 16:50:39
Werner
Hallo Fred,
da sollte aber noch eine Fehlerbehandlung rein. Wenn keine Leerzelen in Spalte 51 vorhanden sind, dann läuft das Makro in einen Fehler.
Gruß Werner
AW: vba, Zeilen löschen = langsam
05.06.2020 21:15:52
GerdL
Moin!
Richtig!

With Columns(51)
If WorksheetFunction.CountBlank(.Cells) > 0 Then
.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End If
End With

Gruß Gerd

326 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige