Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1608to1612
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 löschen

Zeilen löschen
16.02.2018 10:26:24
Lutz
Hallo,
zum löschen von Zeilen verwende ich folgenden Code:

Sub delte()
Dim VAR As String
' Ermittlung Anzahl Zeilen '
Sheets("daten").Activate
Range("A2").End(xlDown).Activate
VAR = ActiveCell.Row
' Zeilen mit Bemerkung xyz in Spalte C löschen '
Sheets("daten").Activate
For i = VAR To 2 Step -1
If Sheets("daten").Range("C" & i) = "xyz" Then Rows(i).Delete
Next i
End Sub

Bei über 40.000 Zeilen dauert das Löschen ziemlich lange.
Kann man das irgendwie beschleunigen?
Danke und Gruß

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilen löschen
16.02.2018 10:59:44
UweD
Hallo
vorher die Bildschirmaktualisierung ausschalten
Application.ScreenUpdating = False
oder Filtern nach xyz und in einem Rutsch weglöschen
LG UweD
AW: Zeilen löschen
16.02.2018 11:14:10
Lutz
Bildschirmaktualisierung ist deaktiviert
AW: Zeilen löschen
16.02.2018 12:09:16
UweD
Hallo
ok, dann mit Filtern
Private Sub weg_damit()
    On Error GoTo Fehler
    Dim TB, SP As Integer, ZE As Integer, LR As Double, Such As String
    
    Set TB = Sheets("daten")
    SP = 3 'Spalte C 
    ZE = 2 'Daten ab Zeile2; wegen Überschrift 
    Such = "xyz"
    
    Application.ScreenUpdating = False
    If TB.AutoFilterMode Then TB.AutoFilterMode = False ' Autofilter ausschalten 
    
    LR = TB.Cells(TB.Rows.Count, "A").End(xlUp).Row 'letzte Zeile der Spalte 
    
    If WorksheetFunction.CountIf(TB.Columns(SP), Such) > 0 Then
        TB.Range(TB.Cells(ZE - 1, SP), TB.Cells(LR, SP)).AutoFilter _
            Field:=1, Criteria1:="=" & Such
        TB.Rows(ZE).Resize(LR).Delete Shift:=xlUp
    Else
        MsgBox "Keine Daten für  '" & Such & "'  vorhanden"
    End If
    
    TB.AutoFilterMode = False
    '*** Fehlerbehandlung 
    Err.Clear
Fehler:
    If Err.Number <> 0 Then MsgBox "Fehler: " & _
        Err.Number & vbLf & Err.Description: Err.Clear
End Sub

LG UweD
Anzeige
Am Anfang jeder VBA-Programmierung
16.02.2018 16:18:21
Daniel
sollte man sich erstmal die Frage stellen:
Wie löse ich denn in Excel diese Aufgabe am schnellsten und einfachsten?
du wirst in Excel sicherlich nicht jede Zeile einzeln prüfen und löschen, also macht man das auch nicht per VBA.
eine alternative wurde dir ja schon gezeigt, nämlich mit dem Autofilter die zu löschenden Zeilen filtern und löschen, da in gefilterten Tabellen nur die sichtbaren Zeilen bearbeitet werden.
Allerdings ist das nur dann wirklich schnell, wenn man vorher nach der Kriterienspalte sortiert, so dass die zu löschenden Zeilen möglichst einen einzigen lückenlosen Zellblock bilden.
(bei sehr großen Datenmengen ist dann das Sportieren zwingend erforderlich, weil Excel mit dem Löschen irgendwann überfordert ist, wenn es sehr viele zu löschende Bereiche gibt (Merke: "1:1000" ist ein Bereich; "1:1,3:3" sind zwei Bereiche))
eine andere Methode, die auch bei unsortierten Listen sehr schnell ist, ist folgende:
1. schreibe in eine Hilfsspalte am Tabellenende eine Formel, welche die zu löschenden Zeilen mit 0 und die Zeilen, die stehenbleiben müssen mit der Zeilennummer kennzeichnet
2. Schreibe in die Überschriftenzeile der Hilfsspalte ebenfalls die 0
3. Wende auf die ganze Tabelle die Funktion DATEN - DATENTOOLS - DUPLIKATE ENTFERNEN an, mit der Hilfsspalte als Kriterium und der Option "keine Überschrift"
4. lösche die Hilfsspalte wieder
das ganze geht natürlich auch als Makro
Da aber anscheinend die meisten überfordert sind, auch ganz einfache Abfolgen von Excelaktionen als Code abzubilden, hier der Code dazu:

With ActiveSheet.UsedRange
With .columns(.columns.count + 1)
.FormulaR1C1 = "=IF(RC3=""xyz"",0,Row())
.Cells(1, 1).Value = 0
.entireRow.RemoveDuplicates .column, xlno
.ClearContents
end with
End with
Gruß Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige