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 Wort gefunden wird

Zeile Löschen wenn Wort gefunden wird
17.07.2018 08:11:06
Torsten
Hallo
habe ein Problem das ich nicht lösen kann. Brauche das mit VBA Makro!!
Ich haben in Excel 4 Spalten.
Das Marko muss in Spalte D suchen ob das Wort "INFO" beeinhaltet ist.
Wenn dies der Fall ist muss die ganze Zeile gelöscht werden.
Es muss die ganze Spalte D durchsucht werden, da es mehrere Zeilen geben kann die das Wort Info beeinhalten können.
Soweit könnt ich das noch lösen. Das Problem ist nur das das Wort Info in der Zelle nicht alleine steht. Es steht immer INFO MAIER oder INFO KARL. Splitten der Spalte ist auch nicht möglich, da in den anderen Spalten wo nicht INFO drin steht ein Datum drin steht was nciht gesplitet werden soll.
Ich habe es nun so. Das Problem ist das er nach einer Zelle sucht wo nur INFO drin steht. Was ja nicht der Fall ist
Sub Löschen()
Dim i     As Integer
Dim intLR As Integer
Sheets("Tabelle1").Cells.SpecialCells(xlCellTypeLastCell).Select
intLR = Selection.Row
With Sheets("Tabelle 1")
For i = 1 To intLR
If InStr(1, .Cells(i, 4).Value, "Info") Then
Rows(i & ":" & i).Select
Selection.Delete Shift:=xlUp
i = i - 1
Else
End If
Next i
End With
End Sub

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeile Löschen wenn Wort gefunden wird
17.07.2018 08:19:43
Bernd
Servus Torsten,
probier es mal damit:

Sub Löschen()
Dim i     As Integer
Dim intLR As Integer
Sheets("Tabelle1").Cells.SpecialCells(xlCellTypeLastCell).Select
intLR = Selection.Row
With Sheets("Tabelle1")
For i = intLR To 2 Step -1
If InStr(1, .Cells(i, 4).Value, "Info") > 0 Then
Rows(i & ":" & i).Select
Selection.Delete Shift:=xlUp
End If
Next i
End With
End Sub
Grüße, Bernd
Anzeige
AW: Zeile Löschen wenn Wort gefunden wird
17.07.2018 08:22:42
ChrisL
Hi
1. "Tabelle1" vs. "Tabelle 1"
2. Löschen Schleifen lässt du besser rückwärts laufen (dann entfällt auch i = i-1)
3. Bei grösseren Datenmengen würde sich z.B. eine Variante mit Autofilter empfehlen
Abgesehen davon ist deine If-Then Bedingung eigentlich OK. Allerdings Case-sensitive (Gross-/Kleinschreibung).
Sub Löschen()
Dim i     As Integer
Dim intLR As Integer
' Case sensitive
Application.ScreenUpdating = False
With Sheets("Tabelle1")
intLR = .Cells.SpecialCells(xlCellTypeLastCell).Row
For i = intLR To 1 Step -1
If InStr(1, .Cells(i, 4).Value, "Info") Then _
.Rows(i).Delete Shift:=xlUp
Next i
End With
End Sub
Sub Löschen2()
Dim i     As Integer
Dim intLR As Integer
' Nicht case sensitive
Application.ScreenUpdating = False
With Sheets("Tabelle1")
intLR = .Cells.SpecialCells(xlCellTypeLastCell).Row
For i = intLR To 1 Step -1
If .Cells(i, 4) Like "*info*" Then _
.Rows(i).Delete Shift:=xlUp
Next i
End With
End Sub
cu
Chris
Anzeige
Variablen als LONG deklarieren
17.07.2018 09:06:19
Matthias
Hallo
Es muss die ganze Spalte D durchsucht werden
Dann solltest Du die Variablen als LONG deklarieren.
Desweiteren musst Du überlegen, ob Du wirklich alles löschen willst, was "Info" beinhaltet.
Es gibt auch Wörter wie: Informatik oder ínfolgedessen.
Um auch wirklich alles zu löschen was "info" beinhaltet, kannst Du noch ein Lcase einsetzen.
Das sehe dann so aus (um mal beim Code von Chris zu bleiben)
Dim i&, intLR&
Application.ScreenUpdating = False
With Sheets("Tabelle1")
intLR = .Cells.SpecialCells(xlCellTypeLastCell).Row
For i = intLR To 1 Step -1
If LCase(.Cells(i, 4)) Like "*info*" Then .Rows(i).Delete Shift:=xlUp
Next i
End With
Gruß Matthias
Anzeige
AW: Variablen als LONG deklarieren
17.07.2018 10:08:32
Torsten
Ok, danke für die Hilfe
nur eine Frage. Warum zeigt er bei intLR die Zeile 520 an wenn die Tabelle nur bis 507 geht
AW: Variablen als LONG deklarieren
17.07.2018 11:01:07
Daniel
Hi
"LastCell" ist für Excel eine wichtige Größe.
Sie Definiert den Zellbereich, für den in Excel Speicherplatz reserviert wird.
Daher handelt Excel hier nach dem Motto: lieber etwas zu groß, dafür nie zu klein.
Dh die LastCell wird nicht bei allen Löschungen sofort angepasst, sondern manchmal erst beim Öffnen der Datei.
Auch Zellen mit Formatierungen können die LastCell beeinflussen.
Gruß Daniel
Anzeige
Ergänzung
18.07.2018 01:26:40
Luc:-?
Morrn, Torsten (& Daniel);
die LastCell ist immer die rechte untere eines (auch teilweise) belegten ZellBereichs, der ggüber den restlichen StandardZellen in der Spalte oder Zeile dieser Zelle Abweichungen aufweist. Löscht man alle Inhalte von Zellen oder entfernt Zeilen u/o Spalten in Gänze, muss man die Datei erst speichern, damit das manifest, Xl also veranlasst wird, das neue Belegungsbild zu übernehmen. Demggüber wirkt ein Neueintrag aber sofort, auch ohne vorherige Speicherung!
🙈 🙉 🙊 🐵 Morrn, Luc :-?
„Die Intelligenzmenge ist auf diesem Planeten eine Konstante, die Bevölkerung nimmt aber zu!“ Auch deshalb informieren mit …
Anzeige
AW: Zeile Löschen wenn Wort gefunden wird
17.07.2018 11:04:37
Daniel
Hi
Nochmal ne tricky-Variante:
with Columns(4)
.replace "*info*", true, xlwhole
.Specialcells(xlcelltypeconstants, 4).entirerow.delete
Ende with
Gruß Daniel
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Zeile Löschen, wenn Wort Gefunden Wird


Schritt-für-Schritt-Anleitung

Um in Excel eine Zeile zu löschen, wenn ein bestimmtes Wort in einer Zelle enthalten ist, kannst Du ein VBA-Makro verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Klicke im Menü auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.

  3. Füge den folgenden Code ein:

    Sub Löschen()
        Dim i As Long
        Dim intLR As Long
        Application.ScreenUpdating = False
        With Sheets("Tabelle1")
            intLR = .Cells.SpecialCells(xlCellTypeLastCell).Row
            For i = intLR To 1 Step -1
                If LCase(.Cells(i, 4)) Like "*info*" Then .Rows(i).Delete Shift:=xlUp
            Next i
        End With
        Application.ScreenUpdating = True
    End Sub
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Drücke ALT + F8, wähle Löschen und klicke auf Ausführen.

Das Makro durchsucht die gesamte Spalte D und löscht jede Zeile, die das Wort "info" enthält, egal in welchem Zusammenhang.


Häufige Fehler und Lösungen

  • Fehler: Das Makro löscht nicht alle Zeilen, die das Wort enthalten.
    Lösung: Stelle sicher, dass Du die Schleife von unten nach oben durchläufst (For i = intLR To 1 Step -1), um die Zeilen korrekt zu löschen.

  • Fehler: Es wird nichts gelöscht, obwohl das Wort vorhanden ist.
    Lösung: Überprüfe die Groß-/Kleinschreibung. Der Code verwendet LCase, um sicherzustellen, dass die Suche nicht case-sensitive ist.


Alternative Methoden

  1. Autofilter verwenden: Du kannst auch den Autofilter verwenden, um Zeilen zu filtern, die das Wort enthalten, und diese dann manuell zu löschen.

    With Sheets("Tabelle1")
       .Range("D1:D" & intLR).AutoFilter Field:=1, Criteria1:="=*info*"
       .Range("D2:D" & intLR).SpecialCells(xlCellTypeVisible).EntireRow.Delete
       .AutoFilterMode = False
    End With
  2. Excel-Funktionen: Wenn Du keine VBA-Makros verwenden möchtest, kannst Du auch die Funktion =WENN(ISTFEHLER(SUCHEN("info";D1));"";D1) in einer Hilfsspalte verwenden, um die entsprechenden Zeilen zu markieren und später zu löschen.


Praktische Beispiele

Angenommen, Du hast eine Tabelle mit mehreren Einträgen in Spalte D. Hier sind einige Szenarien:

  • Beispiel 1: Zeilen mit "INFO MAIER" und "INFO KARL" werden gelöscht.
  • Beispiel 2: Wenn Du "4 bilder ein wort" in einer Zelle hast, wird diese Zeile nicht gelöscht, da das Wort "info" nicht enthalten ist.

Du kannst das Makro anpassen, um auch andere Wörter zu suchen und zu löschen, indem Du *info* durch andere Begriffe ersetzt.


Tipps für Profis

  • Optimierung des Codes: Verwende Long anstelle von Integer für die Zeilennummern. Das verbessert die Leistung bei großen Datenmengen.

  • LastCell-Problem: Um das Problem der LastCell zu beheben, speichere die Datei nach dem Löschen, um die tatsächliche Anzahl der Zeilen zu aktualisieren.

  • Sicherheitskopie: Mache immer eine Sicherheitskopie Deiner Daten, bevor Du ein Makro ausführst, um ungewollte Datenverluste zu vermeiden.


FAQ: Häufige Fragen

1. Frage
Wie kann ich mehrere Wörter gleichzeitig löschen?
Antwort: Du kannst die If-Bedingung erweitern, um mehrere Like-Bedingungen zu verwenden, oder das Replace-Kommando nutzen.

2. Frage
Was ist der Unterschied zwischen case-sensitive und nicht case-sensitive Suchen?
Antwort: Case-sensitive Suchen berücksichtigen die Groß- und Kleinschreibung, während nicht case-sensitive Suchen dies ignorieren.

3. Frage
Wie kann ich das Wort aus einer Zelle entfernen, anstatt die gesamte Zeile zu löschen?
Antwort: Verwende die Funktion Replace, um das spezifische Wort in der Zelle durch nichts zu ersetzen.

.Cells(i, 4).Value = Replace(.Cells(i, 4).Value, "info", "")

Mit diesen Informationen kannst Du in Excel effektiv eine Zeile löschen, wenn ein bestimmtes Wort gefunden wird.

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