Excel Inhalt suchen und Zeile löschen mit Wildcard

Hallo Leute!

Ich stehe hier als VBA Noob vor einem Riesenproblem.

So aber nun zu meinem eigentlichen Problem (Aufgabe):
Ich habe eine Excel Tabelle mit ca. 3.000 - 15.000 Adress-Datensätzen.
Die Tabelle hat 5 Spalten A-E:
Firmenname PLZ Ort Str eMail

Jetzt würde ich gerne die 1 Spalte der Tabelle nach verschiedenen Begriffen (ca. 20 Stk.)durchsuchen lassen und sobald einer der Begriffe in einer Zeile vorkommt, soll diese Zeile gelöscht werden.
z.B. möchte ich das aus der Adressliste automatisch alle Zeilen (Adressen) gelöscht werden in den der Begriff, Stadtverwaltung, Kommunen, Vereine, Stiftung oder ähnliches steht. Der Suchstring muss aber Wildcards enthalten können. Zb wenn ich „gemeinde“ schreibe soll er auch Stadtgemeinde löschen können.

Es gab hier im Forum schon einmal diese Frage allerdings wurde sie dort ohne Wildcards gelöst.
Link zur Frage
/t/excel-inhalt-suchen-und-zeile-loeschen/4651451

Wer kann mir die dortige Lösung umbauen, damit sie mit Festen begriffen funktioniert und auch Wörter wie %gemeinde% oder %abfall% enthalten kann.

mfg
kunzibus

Hi kunzibus,

den Code im alten Artikel finde ich zwar etwas unübersichtlich, aber er scheint ja zu funktionieren. Die Anpassungen sind nicht sehr groß.

die funktion instr(text1, text2) sucht nach dem Vorkommen von Text2 in Text1 und gibt die Stelle zurück, an der sie fündig wird; sonst 0

In dem Code aus dem anderen Artikel passiert das hier:

InStr(Worksheets(„Adressen“).Cells(lngZeileAdressen, lngSpalteAdressen), Worksheets(„KillWords“).Cells(lngZeileKillwords, 1)) > 0

Damit wird schon erkannt, dass „gemeinde“ in „stadtgemeinde“ enthalten ist und entsprechend gelöscht. Allerdings unterscheidet die Funktion Groß- und Kleinschreibung.

Deshalb erst mal in den Texten alles auf Kleinschreibung setzten, die Funktion dazu ist lcase().

Ohne momentan testen zu können, müsste der Code so geändert werden:

InStr(lcase(Worksheets(„Adressen“).Cells(lngZeileAdressen, lngSpalteAdressen)), lcase(Worksheets(„KillWords“).Cells(lngZeileKillwords, 1))) > 0

Das Ganze steht übrigens auch in der VBA Hilfefunktion.

powerblue