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

Forumthread: Mehrere Wörter suchen und Zeile löschen

Mehrere Wörter suchen und Zeile löschen
21.10.2016 16:14:18
Sabrina
Hallo zusammen,
ich habe in der Spalte G Codierungen stehen. Jetzt möchte ich Zeilen löschen, in denen eines der zu suchenden WÖRTER drinsteht.
Ich habe auch schon ansatzweise das richtige Makro gefunden, aber es sucht nur nach einem Wort:
Code: Alles auswählen

Sub Unnoetige_Zeilen_loeschen()
Dim i As Long
Dim letzteZeile As Long
Dim suchBereich As Range
Dim gefunden As Range
Dim ersterTreffer As String
Dim suchWert As String
suchWert = "256" 'hier kommt dein Suchwert rein
With ThisWorkbook.Sheets("Tabelle1")
letzteZeile = .Range("G" & Rows.Count).End(xlUp).Row
Set suchBereich = .Range("G1:G" & letzteZeile)
Set gefunden = suchBereich.Find(What:=suchWert, LookAt:=xlPart)
If Not gefunden Is Nothing Then
ersterTreffer = gefunden.Address
Do
gefunden.Activate
ActiveCell.EntireRow.Delete shift:=xlUp
Set gefunden = suchBereich.Find(What:=suchWert, LookAt:=xlPart)
Loop While Not gefunden Is Nothing
End If
End With
End Sub

Jetzt ist es nur so, dass ich gerne gleich mehrere Suchwerte abdecken möchte, also nicht nur 256 sondern auch zum Beispiel 274 und 264.
Wie kann ich das realisieren? Danke für eure Hilfe!
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Mehrere Wörter suchen und Zeile löschen
21.10.2016 16:42:26
Daniel
Hi
du musst deine Suchwerte in ein Array schreiben und dann nochmal eine Schleife über die Werte des Arrays erstellen.
Wenn in der Spalte G aber keine Formeln sondern feste Werte stehen, kann man auch erstmal in allen Zeilen die gelöscht werden sollen, den Inhalt durch einen Wahrheitswert austauschen und dann alle Zeilen mit Wahrheitswert entfernen. Das geht etwas schneller, als jede Zeile einzeln zu löschen.
dim SuchWert
With ThisWorkbook.Sheets("Tabelle1").columns(7)
for each Suchwert in Array("256", "264"; "274")
.Replace Suchwert, True, xlpart
next
If worksheetfunction.CountIf(.Cells, True) > 0 then _
.SpecialCells(xlcelltypeconstants, 4).EntireRow.Delete
End With
Gruß Daniel
Anzeige
AW: Mehrere Wörter suchen und Zeile löschen
21.10.2016 16:57:38
Sabrina
Hi Daniel,
danke für die Antwort. Jetzt bin ich nur ein absolut blutiger Anfänger auf dem Gebiet... Wo muss ich deinen Abschnitt reinkopieren?
AW: Mehrere Wörter suchen und Zeile löschen
21.10.2016 17:37:02
Daniel
Das ist im Prinzip der vollständige Code.
Kopf- und Endezeile lass ich normalerweise weg, wie du deine Makros benennst ist deine Sache.
Grundlagen zur Erstellung von Makros findest du hier:
http://www.online-excel.de/excel/grusel_vba.php?f=6
Gruß Daniel
Anzeige
AW: Mehrere Wörter suchen und Zeile löschen
25.10.2016 10:12:56
Sabrina
Hallo Daniel,
okay, das hatte ich auch vesucht, aber leider schluckt er den Array nicht und bringt hier immer einen Fehler.

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Mehrere Wörter suchen und Zeile löschen in Excel


Schritt-für-Schritt-Anleitung

Um in Excel mehrere Wörter zu suchen und die entsprechenden Zeilen zu löschen, kannst Du ein VBA-Makro verwenden. Hier ist eine Schritt-für-Schritt-Anleitung, wie Du das machst:

  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 den folgenden Code in das Modul:
Sub Unnoetige_Zeilen_loeschen()
    Dim i As Long
    Dim letzteZeile As Long
    Dim suchBereich As Range
    Dim gefunden As Range
    Dim suchWert As Variant
    Dim suchWerte As Variant

    suchWerte = Array("256", "264", "274") 'hier kommen deine Suchwerte rein

    With ThisWorkbook.Sheets("Tabelle1")
        letzteZeile = .Range("G" & Rows.Count).End(xlUp).Row
        Set suchBereich = .Range("G1:G" & letzteZeile)

        For Each suchWert In suchWerte
            Set gefunden = suchBereich.Find(What:=suchWert, LookAt:=xlPart)
            If Not gefunden Is Nothing Then
                Do
                    gefunden.Activate
                    ActiveCell.EntireRow.Delete shift:=xlUp
                    Set gefunden = suchBereich.Find(What:=suchWert, LookAt:=xlPart)
                Loop While Not gefunden Is Nothing
            End If
        Next suchWert
    End With
End Sub
  1. Schließe den VBA-Editor und kehre zu Excel zurück.
  2. Drücke ALT + F8, wähle das Makro Unnoetige_Zeilen_loeschen aus und klicke auf Ausführen.

Das Makro wird nun alle Zeilen löschen, die eines der angegebenen Wörter enthalten.


Häufige Fehler und Lösungen

  • Fehler beim Array: Wenn Du beim Ausführen des Makros einen Fehler erhältst, stelle sicher, dass die Wörter im Array korrekt eingegeben sind. Achte darauf, dass Du die Werte mit Kommas und nicht mit Semikolons trennst.

  • Keine Zeilen gelöscht: Wenn das Makro keine Zeilen löscht, überprüfe, ob die Spalte G tatsächlich die zu suchenden Werte enthält. Möglicherweise sind die Werte als Zahlen und nicht als Text formatiert.


Alternative Methoden

Wenn Du nicht mit VBA arbeiten möchtest, kannst Du auch die Funktion "Suchen und Ersetzen" in Excel verwenden:

  1. Markiere die Spalte G.
  2. Drücke STRG + H, um das Dialogfeld "Suchen und Ersetzen" zu öffnen.
  3. Gib das Wort ein, das Du suchen möchtest, und lasse das Ersetzen-Feld leer.
  4. Klicke auf "Alle ersetzen", um alle Vorkommen des Worts zu entfernen.
  5. Wiederhole dies für alle Wörter, die Du entfernen möchtest.

Diese Methode ist einfacher, kann jedoch mehr Zeit in Anspruch nehmen, wenn Du viele Wörter hast.


Praktische Beispiele

Nehmen wir an, Du hast in Spalte G die folgenden Werte:

256
123
264
456
274
789

Nach dem Ausführen des Makros wird die Tabelle wie folgt aussehen:

123
456
789

Alle Zeilen mit den Wörtern 256, 264 und 274 wurden erfolgreich gelöscht.


Tipps für Profis

  • Backup erstellen: Erstelle immer ein Backup Deiner Excel-Datei, bevor Du Makros ausführst, um Datenverlust zu vermeiden.
  • Makros optimieren: Du kannst das Makro optimieren, indem Du die Bildschirmaktualisierung deaktivierst, um die Ausführung zu beschleunigen:
Application.ScreenUpdating = False
' Dein Code hier
Application.ScreenUpdating = True
  • Zellen formatieren: Stelle sicher, dass die Zellen in Spalte G korrekt formatiert sind, um Probleme bei der Suche und dem Löschen zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich das Makro auf andere Spalten anwenden?
Du kannst die Spaltenbezeichnung in der Zeile Set suchBereich = .Range("G1:G" & letzteZeile) ändern, um eine andere Spalte auszuwählen.

2. Was mache ich, wenn das Makro nicht funktioniert?
Überprüfe die Eingaben im Array und stelle sicher, dass die Spalte G die richtigen Werte enthält. Wenn Du weiterhin Probleme hast, versuche, den Code Schritt für Schritt zu debuggen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige