Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zeile löschen wenn sie ein Wort enthält

Zeile löschen wenn sie ein Wort enthält
10.07.2013 15:16:36
Johannes
Gibt es eine einfache Möglichkeit mittels VBA eine Zeile zu löschen wenn Sie in Spalte "U" also 21 das Wort "Product Line" enthält?`Gruß

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeile löschen wenn sie ein Wort enthält
10.07.2013 15:23:16
Klaus
Hallo Johannes,
Gruß und Anrede lassen den Beitrag viel angenehmer erscheinen.
Um in der aktiven Zeile zu prüfen:
Sub ZeileWenn()
If Cells(ActiveCell.Row, 21).Value = "Product Line" Then ActiveCell.EntireRow.Delete
End Sub
Grüße,
Klaus M.vdT.

Anzeige
AW: Zeile löschen wenn sie ein Wort enthält
10.07.2013 16:50:24
Johannes
Vielen Dank Klaus,
da hast du natürlich Recht. Das ist das übliche Problem der abgekürzten Kommunikation. ;-)
Gibt es auch die Möglichkeit, das er das mit allen Zeilen überprüft weil so löscht er ja nur die wie beschrieben aktive Zeile sofern ich das richtig verstanden habe. Da es aber in ein bereits bestehendes Macro eingefügt ist sollte er/es eine ganze Tabelle durchgehen.
Gruß
Johannes

Anzeige
ungetestet
10.07.2013 17:00:42
Klaus
Hi,
hab grad kein Excel zur Hand, aber etwa so:
Sub ZeileWenn()
dim lrow as long
dim i as long
with activesheet
lrow = .cells(.rows.count,21).end(xlup).row
for i = lrow to 1 step -1 'zeilen immer rückwärts löschen
If .Cells(i, 21).Value = "Product Line" Then .rows(i).Delete
next i
end with
end sub
Das müsste funktionieren, ist aber sicherlich elendig langsam (da es alle Zeilen per Schleife durchläuft).
Einen performanteren Code erhälst du, wenn du die zu löschenden Zeilen zunachst in einem "Union" sammelst und am Ende auf einen Schlag löscht. Beispiele gibts in der Recherche ohne Ende, ich schüttel mir grad keins aus dem Ärmel.
Eine andere, auch schnelle Alternative:
- Makrorekorder an
- Setze auf Spalte 21 einen Autofilter,
- filtere nach "*Product Line*" (Makrorekorder)
- markiere Spalte 21
- Drücke STRG+G (gehe zu), wähle Inhalte, nur sichtbare
- hebe den Autofilter auf
- Makrorekorder aus
In dem so entstandenen Rekordercode ersetzt du das letzte .Select (in der Zeile müsste in etwas mit specialcells(xltypevisible) oder so stehen) durch .entirerow.delete. Das dürfte ebenfalls rasend schnell laufen.
Grüße,
Klaus M.vdT.

Anzeige
Hallo Johannes, wenn ich ...
11.07.2013 08:48:06
Klaus
... eine Rückmeldung bekomme, zeige ich dir heute gerne eine Methode die 1000 mal schneller ist als die von mir / Uwe bisher vorgestellte.
Grüße,
Klaus M.vdT.

AW: Zeile löschen wenn sie ein Wort enthält
10.07.2013 17:03:59
UweD
Hallo
so?
Sub Product_Line()
Dim ZE%, i%, z%
ZE = 1 'Zeile 1
Application.ScreenUpdating = False
For i = ActiveSheet.Cells(Rows.Count, 21).End(xlUp).Row To ZE Step -1
If ActiveSheet.Cells(i, 21).Value = "Product Line" Then
ActiveSheet.Rows(i).Delete xlUp
z = z + 1
End If
Next
MsgBox z & " Zeilen entfernt"
Err.Clear
Fehler:
If Err.Number  0 Then MsgBox "Fehler: " & Err.Number & vbLf & Err.Description: Err.Clear
End Sub

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Zeilen in Excel löschen, wenn sie ein Wort enthalten


Schritt-für-Schritt-Anleitung

Um in Excel eine Zeile zu löschen, wenn sie ein bestimmtes Wort enthält, kannst Du VBA verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Klicke auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.
  3. Kopiere und füge den folgenden Code ein:
Sub ZeileWenn()
    Dim lrow As Long
    Dim i As Long
    With ActiveSheet
        lrow = .Cells(.Rows.Count, 21).End(xlUp).Row
        For i = lrow To 1 Step -1 ' Zeilen rückwärts löschen
            If .Cells(i, 21).Value = "Product Line" Then .Rows(i).Delete
        Next i
    End With
End Sub
  1. Schließe den VBA-Editor und kehre zu Excel zurück.
  2. Führe das Makro aus, indem Du ALT + F8 drückst und das Makro auswählst.

Dieser Code durchsucht alle Zeilen in Spalte U (Spalte 21) und löscht jede Zeile, die "Product Line" enthält.


Häufige Fehler und Lösungen

  • Fehler 1: "Laufzeitfehler 1004: Das Löschen der Zeilen ist nicht möglich."

    • Lösung: Stelle sicher, dass Du keine Zellen oder Blätter schreibgeschützt hast. Entferne den Schutz, bevor Du das Makro ausführst.
  • Fehler 2: "Das Makro wird nicht gefunden."

    • Lösung: Überprüfe, ob das Makro im richtigen Modul gespeichert ist und ob Du es mit dem richtigen Namen aufrufst.

Alternative Methoden

Es gibt auch andere Methoden, um in Excel Zeilen zu löschen, die ein bestimmtes Wort enthalten. Eine Möglichkeit ist die Verwendung von Autofilter:

  1. Setze einen Autofilter auf die Spalte, die Du überprüfen möchtest.
  2. Filtere nach dem gewünschten Wort.
  3. Markiere die gefilterten Zeilen und lösche sie.
  4. Hebe den Autofilter auf.

Diese Methode ist oft schneller, insbesondere bei großen Datenmengen.


Praktische Beispiele

  • Beispiel 1: Löschen von Zeilen mit dem Wort "Produkt".

    Verwende den oben genannten VBA-Code, um alle Zeilen zu löschen, die in Spalte U das Wort "Produkt" enthalten.

  • Beispiel 2: Löschen von Zeilen, die einen bestimmten Wert haben.

    Wenn Du beispielsweise alle Zeilen löschen möchtest, in denen die Zelle in Spalte A den Wert "X" enthält, kannst Du den Code entsprechend anpassen:

Sub ZeileMitWertLöschen()
    Dim lrow As Long
    Dim i As Long
    With ActiveSheet
        lrow = .Cells(.Rows.Count, 1).End(xlUp).Row
        For i = lrow To 1 Step -1
            If .Cells(i, 1).Value = "X" Then .Rows(i).Delete
        Next i
    End With
End Sub

Tipps für Profis

  • Verwende Application.ScreenUpdating = False: Dies kann die Ausführung des Makros beschleunigen, da der Bildschirm nicht ständig aktualisiert wird.

  • Sammle zu löschende Zeilen: Du kannst die zu löschenden Zeilen in einer Union-Variable sammeln und sie dann auf einmal löschen, was die Geschwindigkeit erhöht.

Dim rngDelete As Range
If rngDelete Is Nothing Then
    Set rngDelete = .Rows(i)
Else
    Set rngDelete = Union(rngDelete, .Rows(i))
End If

FAQ: Häufige Fragen

1. Frage Wie kann ich mehrere Wörter gleichzeitig überprüfen und die entsprechenden Zeilen löschen?

Antwort
Du kannst die If-Bedingung erweitern, um mehrere Wörter zu überprüfen. Zum Beispiel:

If .Cells(i, 21).Value = "Product Line" Or .Cells(i, 21).Value = "Another Word" Then .Rows(i).Delete

2. Frage Funktioniert dieser Code auch in Excel Online?

Antwort
Nein, VBA ist nicht in Excel Online verfügbar. Du musst die Desktop-Version von Excel verwenden, um diesen Code auszuführen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige