Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Dynamische Suche mit mehreren Kriterien

Dynamische Suche mit mehreren Kriterien
21.08.2019 16:01:11
Alex
Servus zusammen,
ich habe eine große Excelliste (A1:CA8700) und habe mir über eine Userform eine Suchfunktion gebaut.
Es gibt insgesamt 7 Suchfelder, die entsprechend in der Datei 7 Spalten durchsuchen.
Das Suchergebnis wird live/dynamisch in einer Listbox mit 7 Spalten entsprechend dargestellt.
Ich suche mit dem Standard Set rng = Range("F:F").Find(What:=...........)
Mit einer Suche ist das kein Problem und funktioniert alles.
Wenn ich in das 2. Feld was eingebe, wird das 1. Suchkriterium (logischerweise) übergangen und es wird nur nach dem 2. Suchkriterium angezeigt.
Problem:
Wie bekomme ich die 7 Suchkriterien alle miteinander verknüpft, dass nur die Kombination aus den Suchkriterien angezeigt werden?
Danke und Gruß
Alex
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Dynamische Suche mit mehreren Kriterien
21.08.2019 16:35:39
Luschi
Hallo Alex,
ich mache das so:
- Set rng = Range("F:F").Find(What:=...........)
- anschließend überprüfe ich, ob in der selben Zeile des gefundenen Wertes in Spalte 'H'
  der Inhalt mit dem Wert aus dem 2. Suchkriterium übereinstimmt
  If rng.Offset(0, 2).value = '2. Suchkriterium' Then
- wenn nein einfach in Spalte 'F' mit FindNext weitersuchen
- wenn ja, dann wieder prüfen, ob der Inhalt der Spalte 'K' der selbe Zeile mit dem 3. Suchkriterium
  übereinstimmt usw.
- Sollte es eine Fundstellte in Spalte 'F' geben, bei der auch die anderen 6 Bedingungen der
  entsprechen den Zeile passen, dann diese ZeilenNr. merken
Also nur einen Find-Befehl mit den entsprechenden FindNext, der Rest sind If-Abfragen.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Dynamische Suche mit mehreren Kriterien
21.08.2019 17:02:52
Daniel
Hi
1. schreibe den Inhalt der Textfelder in 7 Zellen. Entweder über die Eigenschaft ControlSource oder wenns schneller gehen soll per Code im Change-Event der jeweiligen Textbox
2. füge der Tabelle eine Hilfsspalte hinzu mit folgender Formel (schematisch)
=Oder(ZelleText1="";ZelleText1=F1)+Oder(ZelleText2="";ZelleText2=H1)+usw für alle 7 Textzellen
je nachdem welchen Übereinstimmungstyp du haben willst, kannst du das ZelleText1=F1 noch variieren:
a) genaue Übereinstimmung: ZelleText1 = F1
b) immer mit Enthält, Groß-Kleinscheibung beachtent: IstZahl(Finden(ZelleText1;F1)
c) immer mit Enthält, ohne Groß-Kleinschreibung: IstZahl(Suchen(ZelleText1;F1)
d) Anwender soll über Joker die Suchart bestimmen können: ZählenWenn(F1;ZelleText1)
3. für die Befüllung deiner Listbox musst du dann nur noch diese zusätzliche Hilfsspalte nach dem Wert 7 durchsuchenn
Gruß Daniel
Anzeige
AW: Dynamische Suche mit mehreren Kriterien
22.08.2019 11:43:26
Alex
Servus zusammen,
Luschi deine Lösung wird nicht funktionieren oder es wird ein Monstercode.
Es gibt 7 Suchfelder, aber es gibt keine feste Suchreihenfolge. Ich kann also erst in das Suchfeld 5 was eingeben, dann bei 2 und dann wieder was bei 7.
Daniel, deine Lösung habe ich nicht so ganz verstanden...
Am einfachsten wäre es doch, dass ich nach dem ersten Suchergebnis - was dann in der Listbox steht - in der Listbox suche und nicht mehr in der Tabelle.
Analog der andere Suche müsste ich dann analog mind. 3 Buchstaben im 2. Suchfeld eingeben und der sucht in der Listbox und schmeoßt alle Einträge raus, die nicht passen.
Ist das Möglich?
Anbei mein Code für das 1. Suchfeld:
Private Sub TextBox2_Change()
Dim rng As Range
Dim sAddress As String
Dim ZSuche As Integer
ListBox1.Clear
If TextBox2 = "" Or TextBox2 = " " Or Len(TextBox2) 
P.S.: Spalte 8 der Listbox dient nur dazu mit einem Doppelklick in die entsprechende Zeile zu springen.
Danke und Gruß
Alex
Anzeige
AW: Dynamische Suche mit mehreren Kriterien
23.08.2019 11:11:18
Luschi
Hallo Alex,
Deine Kritik ist angebracht, aber ohne Demodatei rühre ich da keinen Finger. Habe verstanden, was Du willst, aber das ist doch ein bißchen mehr als nur helfen:
- denn bei jedem! verändern der Filterbedingungen in irgend einem Suchfeld müssen die anderen
  6 Kriterienfelder neu angepaßt werden
- es dürfen dann nur noch die Infos in den restlichen Auswahlfeldern stehen, die noch möglich sind
- das ist aber über die normale Vba-Programmierung sehr aufwendig
- ich verwende dazu die Datenbankfunktionalität von ADODB, also SQL-Code, der auch in Excel-Vba funktioniert.
Gruß von Luschi
aus klein-Paris
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Dynamische Suche mit mehreren Kriterien


Schritt-für-Schritt-Anleitung

  1. Userform erstellen: Erstelle eine Userform mit 7 Suchfeldern, die den Bereich A1:CA8700 deiner Excel-Datei durchsuchen.
  2. Suchkriterien einfügen: Verwende Set rng = Range("F:F").Find(What:=...........) für das erste Suchfeld.
  3. Kriterien verknüpfen: Nutze eine Schleife, um zu überprüfen, ob alle 7 Suchkriterien erfüllt sind. Dies kann mit If-Abfragen geschehen:
    If rng.Offset(0, 2).Value = '2. Suchkriterium' Then
  4. Suchfunktion erweitern: Füge die Logik für die restlichen Suchkriterien ein. Das bedeutet, dass du FindNext verwenden musst, um alle möglichen Übereinstimmungen zu finden.
  5. Listbox aktualisieren: Die Listbox sollte live aktualisiert werden, während du die Suchkriterien eingibst.

Häufige Fehler und Lösungen

  • Kein Ergebnis bei Eingabe: Wenn du kein Ergebnis erhältst, könnte es daran liegen, dass das Suchfeld leer ist oder keine Übereinstimmung gefunden wurde. Stelle sicher, dass du die Eingaben überprüfst.
  • Falsche Filterung: Wenn die Filterung nicht wie gewünscht funktioniert, überprüfe den Code auf mögliche logische Fehler in den If-Bedingungen.
  • Leere Listbox: Achte darauf, dass die Listbox nach jeder Eingabe gelöscht wird (ListBox1.Clear), um vorherige Ergebnisse zu entfernen.

Alternative Methoden

Eine alternative Methode zur dynamischen Suche in Excel ist die Verwendung von Hilfsspalten. Du kannst eine Hilfsspalte einfügen, in der du die Suchkriterien in einer Formel verknüpfst. Beispiel:

=ODER(ZelleText1="";ZelleText1=F1)+ODER(ZelleText2="";ZelleText2=H1)+...

Diese Formel ermöglicht es dir, die Übereinstimmungstypen wie genaue Übereinstimmung oder "enthält" zu variieren. Anschließend kannst du die Hilfsspalte nach dem Wert 7 durchsuchen.


Praktische Beispiele

Wenn du beispielsweise nach mehreren Kriterien suchst, kannst du den folgenden VBA-Code verwenden:

Dim rng As Range
Set rng = Range("A1:A100")
Dim foundCell As Range

For Each cell In rng
    If cell.Value = TextBox1.Value And cell.Offset(0, 1).Value = TextBox2.Value Then
        ' Hier kannst du deine Logik einfügen
    End If
Next cell

Dieser Code sucht in den Spalten A und B nach den Werten aus den Textboxen und kann leicht angepasst werden, um mehr Kriterien zu berücksichtigen.


Tipps für Profis

  • Verwende ADODB: Für komplexe Suchen kann die Verwendung von ADODB und SQL-Abfragen sinnvoll sein. Dies reduziert den Aufwand für die Programmierung und ermöglicht eine schnellere Suche.
  • Optimierung der Suchgeschwindigkeit: Reduziere die Anzahl der Zellen, die durchsucht werden müssen, indem du den Suchbereich einschränkst.
  • Suchhistorie speichern: Implementiere eine Funktion, die die letzten Suchanfragen speichert, um die Benutzerfreundlichkeit zu erhöhen.

FAQ: Häufige Fragen

1. Wie kann ich die Suche in einer Listbox durchführen?
Du kannst die Listbox nach der Eingabe in die Suchfelder filtern, indem du die Listbox mit den aktuellen Suchkriterien erneut befüllst.

2. Was mache ich, wenn meine Suche zu lange dauert?
Überprüfe, ob du den Suchbereich reduzieren kannst. Verwende auch ADODB, um die Geschwindigkeit zu verbessern.

3. Kann ich die Suche anpassen, um nur bestimmte Spalten zu durchsuchen?
Ja, du kannst den Bereich, den du durchsuchst, anpassen, indem du nur die relevanten Spalten in den Range-Befehl einfügst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige