Makro nach Spalten mit bestimmten inhalt suchen

Hallo,

ich benötige einen code der mir der mit einer inputbox allen Spalten löscht die ein gewisses WOrt nicht enhalten.

Zum besseren verstehen

  1. Makro starten
  2. box fragt nach welchem Wort gesucht werden soll
  3. alle spalten in denen dieses Wort gefunden werden, werden gelöscht.

Ich danke im voraus

ich benötige einen code der mir der mit einer inputbox allen
Spalten löscht die ein gewisses WOrt nicht enhalten.

  1. alle spalten in denen dieses Wort gefunden werden, werden
    gelöscht.

Hallo Jo,

du widersprichst dir, einige dich mal mit dir was du willst :smile:
Ggfs durch = ersetzen.
In ein Standardmodul, Modul1 o.ä.:

Option Explicit

Sub Loesch()
Dim Spa As Long, Eing
Eing = InputBox("Wert eingeben", "Löschabfrage")
If Eing = "" Then Exit Sub
With Worksheets("Tabelle1")
 For Spa = .UsedRange.SpecialCells(xlCellTypeLastCell).Column To 1 Step -1
 If Application.CountIf(.Columns(Spa), Eing) 0 Then
 .Columns(Spa).Delete
 End If
 Next Spa
End With
End Sub

Gruß
Reinhard

ahhhh
Reinhard,
sorry, man sollte es natürlich noch mal lesen bevor man es postet.

natürlich sollen dann alle spalten gelöscht werden die das Wort nicht enthalten

Es passiert leider nicht das was ich erhofft hatte.
Ich sehe keinerlei veränderung in der Datei.
Kann es vielleicht sein, das es daran liegt, das in den Zellen Ganze Sätze stehen?

Jo

Es passiert leider nicht das was ich erhofft hatte.
Ich sehe keinerlei veränderung in der Datei.
Kann es vielleicht sein, das es daran liegt, das in den Zellen
Ganze Sätze stehen?

Hallo Jo,

ja.

If Application.CountIf(.Columns(Spa), „*“ & Eing & „*“) = 0 Then

Gruß
Reinhard

Reinhard,

das hat sehr gut geklappt, prima.

Wenn ich das ganz jetzt auch für komplette Zeilen löschen nutzen will.
Also wort eingeben und alle Zeilen löschen die nicht das gesuchte Wort enthalten.Wie würde es dann aussehen?
Wäre schön wenn Du mir ein Stichworte dazu schreibst damit ich es verstehe
danke

Sub Zeilelöschen()

Wenn ich das ganz jetzt auch für komplette Zeilen löschen
nutzen will.
Also wort eingeben und alle Zeilen löschen die nicht das
gesuchte Wort enthalten.Wie würde es dann aussehen?
Wäre schön wenn Du mir ein Stichworte dazu schreibst damit ich
es verstehe

Hallo Jo,

vergleiche beide Codes sie sind analog aufgebaut.

Prinziop ist immer gleich. Vba weiß ja nicht wieviele Spalten gefüllt sind, das ermittle ich dann mit specialscells usw.

Dann gehe ich Spalte für Spalte durch.
Das macht man nahezu immer rückwärts denn dann muß man nicht in die Spaltenzählung eingreifen per Code.

(Ging ich von Spalte 1 los und müßte die lösechen dann ist sie ja weg, somit ist AltB dann neuA und AltC dann NeuB, dann würde der Code in der For Schleife die zweite Spalte prüfen, das ist aber jezt die alte Spalte B, d.h. die alte Spalte B wurde gar nicht geprüft.
Rückwärts passiert das eben nicht)

Mit Zählenwenn in Vba-Schreibweise (CountIf) zähle ich dann den Suchbegriff, Wenn 0 gezählt Spalte löschen.

Sub LoeschZeile()
Dim Zei As Long, Eing
Eing = InputBox("Wert eingeben", "Löschabfrage")
If Eing = "" Then Exit Sub
With Worksheets("Tabelle1")
 For Zei = .UsedRange.SpecialCells(xlCellTypeLastCell).Row To 1 Step -1
 If Application.CountIf(.Rows(Zei), "\*" & Eing & "\*") = 0 Then
 .Rows(Spa).Delete
 End If
 Next Spa
End With
End Sub

Gruß
Reinhard

1 Like

Reinhard,

cool

danke,

funktioniert genauso, wie ich es mir vorgestellt habe