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

Forumthread: Zeilen löschen, wenn in der Spalte B ein x steht

Zeilen löschen, wenn in der Spalte B ein x steht
13.07.2017 17:17:05
Kathi
Hallo,
ich habe folgenden VBA Code, allerdings dauert die Durchführung bei rund 10.000 Zeilen seeeehr lange (und ehrlich gesagt habe ich Angst, dass Excel zwischendurch abstürzt, denn es blinkt schon alles wie verrückt).

lz = Cells(Rows.Count, 1).End(xlUp).Rows.Row
For t = lz To 2 Step -1
If Cells(t, 1).Value = "x" Then
Rows(t).Delete shift:=xlUp
End If
Next t
Habt ihr vielleicht ein paar Tipps, was ich daran ändern kann, damit die Zeilen schneller gelöscht werden?
Vielen Dank im Voraus!
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Zeilen löschen, wenn in der Spalte B ein x steht
13.07.2017 17:18:11
Kathi
Oops, die Überschrift sollte lauten:
Zeilen löschen, wenn in der Spalte A ein x steht
Zeilen löschen, wenn in der Spalte B ein x steht
13.07.2017 17:18:55
Hajo_Zi
benutze Autofilter und lösche Sichtbare Zeilen.

Ich gebe keinen Dank für eine Rückmeldung, da ich durch solche Beiträge nicht meine Beitragszahl erhöhen muss.
Rückmeldung ist ja in der Heutigen Zeit nicht üblich und die wenigen die eine Rückmeldung geben, mögen mir das verzeihen, das kein Danke für eine Rückmeldung kommt.
Anzeige
AW: Zeilen löschen, wenn in der Spalte B ein x steht
13.07.2017 17:22:13
Kathi
Lieber Hajo,
den Autofilter würde ich persönlich benutzen, allerdings soll die Liste von anderen Personen "bedient" werden. Da bin ich dann schon froh, wenn sie wissen, wie der Button (Makro) aussieht, den sie drücken müssen. :-/
Beispielmappe bitte
13.07.2017 17:41:10
Werner
Hallo Kathi,
von welcher Spalte bis zu welcher Spalte geht dein Datenbereich? Ist der immer gleich?
Mach mal eine kleine Beispielmappe mit ein paar Dummy-Daten. Die sollte aber in ihrer Struktur mit deinem Original übereinstimmen.
Das ginge mit dem Autfilter (makrogesteuert) recht einfach.
Gruß Werner
Anzeige
ScreenUpdating ausschalten dann blinkt auch nichts
14.07.2017 00:05:20
Matthias
Hallo Kathi
ScreenUpdating ausschalten dann blinkt auch nichts.
Sub loesche_X()
Application.ScreenUpdating = False
lz = Cells(Rows.Count, 1).End(xlUp).Rows.Row
For t = lz To 2 Step -1
If Cells(t, 1).Value = "x" Then
Rows(t).Delete shift:=xlUp
i = i + 1
End If
Next t
MsgBox "es wurden " & i & " Zeilen gelöscht"
End Sub
Gruß Matthias
Anzeige
AW: ScreenUpdating ausschalten dann blinkt auch nichts
18.07.2017 08:33:58
Kathi
Lieber Matthias,
tut leid, dass ich mich erst so spät melde.
danke für deine Nachricht, werde es gleich probieren.
Liebe Grüße
AW: Zeilen löschen, wenn in der Spalte B ein x steht
14.07.2017 00:27:48
Daniel
Hi
zum Schnellen Löschen von Zeilen kann man die Funktion DATEN - DATENTOOLS - DUPLIAKTE ENTFERNEN nutzen.
hierzu kennzeichnet man in einer Hilfsspalte alle zu löschenden Zeilen per Formel mit 0 und die Zeilen die stehen bleiben müssen mit der Zeilennummer.
Das geht natürlich auch per Code:
With ActiveSheet.Usedrange
With .Columns(.Columns.Count + 1)
.FormulaR1C1 = "=IF(RC1=""x"",0,Row())"
.Cells(1, 1).Value = 0
.EntireRow.RemoveDuplicates .Column, xlno
.ClearContents
End With
End with
gruß Daniel
Anzeige
AW: Zeilen löschen, wenn in der Spalte B ein x steht
18.07.2017 08:35:08
Kathi
Lieber Daniel,
tut leid, dass ich mich erst jetzt melde.
Danke, werde ich ebenfalls testen.
Liebe Grüße

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zeilen löschen, wenn in der Spalte B ein x steht


Schritt-für-Schritt-Anleitung

Um in Excel alle Zeilen zu löschen, wenn in der Spalte B ein "x" steht, kannst du den folgenden VBA-Code verwenden. Achte darauf, dass du in einer Version von Excel arbeitest, die VBA unterstützt (z.B. Excel 2010 oder neuer).

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.
  3. Kopiere und füge den folgenden Code in das Modul ein:
Sub loesche_X()
    Application.ScreenUpdating = False
    Dim lz As Long
    Dim i As Long
    lz = Cells(Rows.Count, 2).End(xlUp).Row ' Spalte B
    For t = lz To 2 Step -1
        If Cells(t, 2).Value = "x" Then
            Rows(t).Delete shift:=xlUp
            i = i + 1
        End If
    Next t
    MsgBox "Es wurden " & i & " Zeilen gelöscht"
    Application.ScreenUpdating = True
End Sub
  1. Schließe den VBA-Editor und führe das Makro aus, indem du ALT + F8 drückst, das Makro auswählst und auf Ausführen klickst.

Häufige Fehler und Lösungen

  • Excel stürzt ab oder blinkt: Das kann passieren, wenn ScreenUpdating nicht deaktiviert ist. Stelle sicher, dass die Zeile Application.ScreenUpdating = False im Makro enthalten ist.

  • Zeilen werden nicht gelöscht: Überprüfe, ob der Wert in der Zelle genau "x" ist (ohne Anführungszeichen). Manchmal können Leerzeichen oder andere Zeichen zu unerwartetem Verhalten führen.


Alternative Methoden

Wenn du nicht mit VBA arbeiten möchtest, kannst du auch den Autofilter verwenden:

  1. Wähle deine Daten aus und gehe zu Daten > Filter > Autofilter.
  2. Klicke auf den Dropdown-Pfeil in der Spalte B und wähle nur "x" aus.
  3. Markiere die sichtbaren Zeilen und lösche sie dann.

Eine weitere Möglichkeit ist, die Funktion Daten - Datentools - Duplikate entfernen zu verwenden. Hierbei kannst du in einer Hilfsspalte eine Formel einfügen, um die Zeilen zu kennzeichnen, die gelöscht werden sollen.


Praktische Beispiele

Hier ist ein einfaches Beispiel, um Excel alle Zeilen unterhalb einer bestimmten Zeile zu löschen, wenn in Spalte B ein "x" steht:

  1. Angenommen, du hast folgende Daten in der Spalte B:
A B
1 a
2 x
3 b
4 x
5 c
  1. Nach Ausführung des VBA-Codes sollten Zeilen mit "x" in Spalte B gelöscht werden.

Wenn du auch ungerade Zeilen löschen möchtest, kannst du eine weitere Bedingung in die Schleife einfügen.


Tipps für Profis

  • Um die Leistung zu verbessern, kannst du den gesamten Bereich in einem Array speichern, die Änderungen vornehmen und dann das Array zurück in das Arbeitsblatt schreiben.

  • Du kannst auch die Methode RemoveDuplicates verwenden, um Excel Zeilen automatisch zu löschen, die bestimmte Kriterien erfüllen.

  • Berücksichtige die Verwendung von dynamischen Bereichen in deinen VBA-Skripten, um die Effizienz zu erhöhen.


FAQ: Häufige Fragen

1. Wie kann ich alle Zeilen mit einer 0 in einer bestimmten Spalte löschen? Du kannst einen ähnlichen VBA-Ansatz verwenden, indem du die Bedingung anpasst, um nach "0" zu suchen.

2. Kann ich auch mehrere Spalten gleichzeitig prüfen? Ja, du kannst die If-Bedingung im Code erweitern, um mehrere Spalten zu berücksichtigen.

3. Wie lösche ich nur ungerade Zeilen in Excel? Du kannst eine Schleife erstellen, die nur die ungeraden Zeilen überprüft und diese löscht.

4. Gibt es eine Möglichkeit, dies ohne VBA zu tun? Ja, du kannst die Filterfunktion oder die bedingte Formatierung nutzen, um die Daten vorher zu sortieren und dann manuell zu löschen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige