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

Forumthread: Find Methode mit mehreren Suchbegriffen

Find Methode mit mehreren Suchbegriffen
Shizoe89
Hallo Excel-Freunde,
ich arbeite gerade an einer umfangreichen Datenbankabfrage über ein Userform. Dabei nutze ich für die Suchfunktion die Find-Methode in folgender Form:
lngSpUmbr = erste freie Spalte (das rechte Ende der Datenmatrix)
Set rngZelle = Tabelle1.UsedRange.Find(strSearch, Tabelle1.Cells(lngZeile, lngSpUmbr))
lngZeile = rngZelle.Row
Durch das Suchen ab der lngZeile (public) und lngSpUmbr (public) kann ich durch erneutes Drücken des Suchen-Buttons immer das nächste Ergebnis in der Tabelle abfragen.
Nun würde ich gerne auch kombinierte Suchen starten. Wenn ich quasi in Zeile1 Auto und LKW, in Zeile 2 Auto und PKW und in Zeile 3 PKW und LKW stehen habe, und nun nach "PKW Auto" suche, soll er für diese Suche nur Zeile2 ausgeben.
Ist das prinzipiell möglich?
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Nein, ist SO nicht möglich !
21.06.2012 15:28:39
NoNet
Hallo Shizo,
die Excel-Suche sucht immer nur in EINZELNEN Zellen nach den Werten, NIE nach Zellkombinationen in einer Zeile !
Du könntest stattdessen den Autofilter verwenden oder auch eine Hilfsspalte(siehe Beispiel, Spalte C) mit einer passenden Funktion und nach dem Wert dieser Spalte (WAHR) suchen :
ABC
1
2
3
4
5
6
7

Zelle Formel 
C5   =ANZAHL(VERGLEICH($C$1;A5:B5;0);VERGLEICH($C$2;A5:B5;0))=ANZAHL2($C$1:$C$2) 
C6   =ANZAHL(VERGLEICH($C$1;A6:B6;0);VERGLEICH($C$2;A6:B6;0))=ANZAHL2($C$1:$C$2) 
C7   =ANZAHL(VERGLEICH($C$1;A7:B7;0);VERGLEICH($C$2;A7:B7;0))=ANZAHL2($C$1:$C$2) 

In diesem Beispiel musst Du nur die Suchbegriffe in C1:C2 ändern !
Gruß, NoNet
   - 1:3


http://www.exceltreffen.de/index.php?page=224
Anzeige
AW: Nein, ist SO nicht möglich !
22.06.2012 10:49:26
Shizoe89
If lngZeile = 0 Then
searchphrase = Split(Abfrage.TextBox1.Value, ",")
strSearch = searchphrase(0)
On Error Resume Next
strSearch2 = Trim(searchphrase(1))
If strSearch2 = "" Then strSearch2 = "*"
On Error GoTo 0
End If
RE2:
Set rngZelle = Tabelle1.UsedRange.Find(strSearch, Tabelle1.Cells(lngZeile, lngSpUmbr))
lngZeile = rngZelle.Row
On Error Resume Next
Set rngZelle2 = Tabelle1.Rows(lngZeile).Find(strSearch2)
lngZeile2 = rngZelle2.Row
On Error GoTo 0
If lngZeile lngZeile2 Then GoTo RE2
so funktioniert es. aber Effizienz ist auch was anderes.. ;-)
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Find Methode mit mehreren Suchbegriffen in Excel VBA


Schritt-für-Schritt-Anleitung

Um die Find-Methode in Excel VBA zu nutzen, um mehrere Suchbegriffe zu finden, folge diesen Schritten:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Erstelle ein neues Modul: Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsx)" und wähle Einfügen > Modul.

  3. Füge den folgenden Code ein:

    Sub SucheMitMehrerenBegriffen()
        Dim lngZeile As Long
        Dim lngSpUmbr As Long
        Dim rngZelle As Range
        Dim strSearch As String
        Dim searchphrase As Variant
    
        lngSpUmbr = Tabelle1.UsedRange.Columns.Count
        searchphrase = Split(InputBox("Gib die Suchbegriffe ein, getrennt durch Kommas:"), ",")
    
        strSearch = Trim(searchphrase(0))
        On Error Resume Next
        Set rngZelle = Tabelle1.UsedRange.Find(strSearch, Tabelle1.Cells(1, lngSpUmbr))
    
        If Not rngZelle Is Nothing Then
            lngZeile = rngZelle.Row
            ' Hier kannst du weitere Suchen hinzufügen
        End If
        On Error GoTo 0
    End Sub
  4. Testen der Suche: Führe das Makro aus, indem du F5 drückst und gib die Suchbegriffe in dem Format PKW, Auto ein.


Häufige Fehler und Lösungen

  • Fehler: "Objekt nicht gefunden": Dies kann passieren, wenn dein Suchbegriff nicht in den Daten vorhanden ist. Überprüfe die Schreibweise und die Groß-/Kleinschreibung.
  • Lösung: Verwende On Error Resume Next: Damit kannst du mögliche Fehler abfangen, ohne dass das Skript stoppt.

Alternative Methoden

Wenn die Find-Methode nicht die gewünschten Ergebnisse liefert oder du eine komplexere Suche benötigst, kannst du folgende Alternativen in Betracht ziehen:

  • Autofilter: Nutze den Autofilter, um die Daten basierend auf mehreren Kriterien anzuzeigen. Dies kann oft schneller und einfacher sein.
  • Hilfsspalten: Erstelle eine Hilfsspalte, die die Suchkriterien kombiniert. Zum Beispiel:

    =WENN(UND(ISTZAHL(SUCHEN($C$1;A1));ISTZAHL(SUCHEN($C$2;A1)));"WAHR";"FALSCH")

Praktische Beispiele

Hier ist ein Beispiel, wie du die Find-Methode mit mehreren Suchbegriffen in einer Tabelle umsetzen kannst:

  1. Tabelle aufbauen: Erstelle eine Tabelle mit Fahrzeugen in Spalte A und B.
  2. Suchbegriff eingeben: Setze die Suchbegriffe in die Zellen C1 und C2.
  3. Formel in Hilfsspalte: Verwende die oben genannte Formel in Spalte C, um zu prüfen, ob beide Begriffe in einer Zeile vorhanden sind.

Wenn du nun die Find-Methode verwendest, um nach "PKW" und "Auto" zu suchen, wird nur die Zeile angezeigt, die beide Begriffe enthält.


Tipps für Profis

  • Verwende das UsedRange: Die UsedRange-Eigenschaft ist nützlich, um nur im aktiven Bereich zu suchen und die Effizienz zu erhöhen.
  • Optimierung der Suche: Um mehrere Ergebnisse zu finden, kannst du die Do While-Schleife verwenden, um alle Vorkommen zu durchlaufen.

    Do While Not rngZelle Is Nothing
        ' Aktionen für jedes gefundene Ergebnis
        Set rngZelle = Tabelle1.UsedRange.FindNext(rngZelle)
    Loop

FAQ: Häufige Fragen

1. Kann ich die Find-Methode für mehrere Zellen gleichzeitig verwenden?
Nein, die Find-Methode sucht nur in einzelnen Zellen. Du musst eine Hilfsspalte oder den Autofilter verwenden, um mehrere Zellen zu kombinieren.

2. Wie kann ich die Suche in einem bestimmten Bereich einschränken?
Gib den Bereich, in dem gesucht werden soll, explizit an, z.B. Set rngZelle = Tabelle1.Range("A1:B10").Find(strSearch).

3. Funktioniert dies in allen Excel-Versionen?
Ja, die Find-Methode und die beschriebenen Techniken sind in den gängigen Excel-Versionen verfügbar, einschließlich Excel 2010 und höher.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige