Clever-Excel-Forum

Normale Version: Mehrere Wörter suchen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen!

Ich habe ein VBA-Programm geschrieben, um in Spalte A nach dem Wort "Hallo" in einer Tabelle zu suchen. Sobald das Wort in der Spalte gefunden wird, überträgt das Programm die Zeile in der Spalte nach rechts in eine neue Tabelle. Das funktioniert gut. Jetzt möchte ich nach mehreren Wörtern gleichzeitig suchen. Leider funktioniert das nicht ... Kann sich jemand den VBA-Code ansehen und mir sagen, was ich falsch gemacht habe? Vielen Dank im Voraus!


Der Code

Sub test()
T = "T1"
X = "A"
AX = 1

Z = "T4"
Y = 2
AY = "B"

Do Until Suche <> ""
Suche = ("hallo")

Loop
Set A = Worksheets(T)
Set B = Worksheets(Z)
Y = Y

With A.Columns(X)
Set Gefunden = .Find(Suche, LookIn:=xlValues)
If Not Gefunden Is Nothing Then
Erste = Gefunden.Address
Do 'für alle Fundstellen
B.Cells(Y, AY).Resize(1, AX) = Gefunden.Offset(0, 1).Resize(1, AX).Value
Y = Y + 1
Set Gefunden = .FindNext(Gefunden)
Loop Until Gefunden.Address = Erste
End If
End With
End Sub
Hallo,

bist du sicher, dass es da eine funktionierende Version gibt? Die unter deinem Betrag angezeigte markiert bei mir zwei Zeilen als fehlerhaft.
Pardon, hatte leider die falsche Version eingefügt. Mein Fehler! Ist korrigiert :)
Hallo,

Du kannst bei Find nur einen Suchbegriff verwenden. Es gibt uA folgende Möglichkeiten:

1) Rufe die Suchfunktion mehrmals hintereinander mit den jeweiligen Begriffen auf
2) Kopiere die Daten in eine Array-Variable und gehe diese Zeile für Zeile durch und vergleiche den Inhalt mit den Suchbegriffen.
Vielen Dank für deinen Kommentar. Das Problem ist, dass ich nach c.a 160 Wörtern suchen muss und die jeweiligen Spalten rechts daneben ausgeben soll. Natürlich lässt sich das durch eine mehrfache Wiederholung des Programms realisieren, jedoch ist es wünschenswert es so automatisiert wie möglich zu machen. Lässt sich die Array-Variable mit dem VBA Code verbinden?
Na ja, Dein Code-Schnipsel ist ja nicht sehr groß. Da kann man nicht viel davon verwenden. Für einen sinnvollen Lösungsvorschlag wären mehr Infos notwendig. Wie sieht die Tabelle aus? Welcher Bereich soll davon durchsucht werden? Wo stehen die (160) Suchbegriffe?

Eine Beispieldatei wäre hilfreich!
Hallöchen,

im Prinzip so.
Deine Suchworte stehen z.B. in Tabelle2, Spalte A - sonst steht da nix. Das Makro reagiert flexibel auf die Anzahl der Einträge dort. Es sollten nur keine Leerzellen zwischendrin sein.
Deinen Suchcode musst Du dann in der Schleife einfügen, ich habe dort mal ein paar Zeilen drin, etwas abgewandelt.
Wenn Du einen treffer hast könntest Du die Schleife dann auch mit Exit For verlassen, damit Du nicht mehrere Kopien bei mehreren Treffern in einer Zeile erhältst.

Code:
Option Explicit

Sub test()
'Variablendeklarationen
'Variant
Dim arrSuch, gefunden
'Integer
Dim iCnt%
'Array einlesen
'Mit dem Blatt TABELLE2
With Sheets("Tabelle2")
  'Daten in Array uebertragen
  arrSuch = .Range("A1:A" & .Cells(.Rows.Count, 1).End(xlUp).Row).Value
'Ende Mit dem Blatt TABELLE2
End With
'Schleife ueber alle Arrayeintraege
For iCnt = 1 To UBound(arrSuch)
  'Dein Code
  With Columns(1)
    Set gefunden = .Find(arrSuch(iCnt, 1), LookIn:=xlValues)
    If Not gefunden Is Nothing Then
    '...
    End If
  End With
'Ende Schleife ueber alle Arrayeintraege
Next
End Sub