mein kleines Projekt hat eine neue Frage aufgeworfen:
Ich habe eine Tabelle mit 6 Spalten mit verschiedenen Inhalten. Jetzt möchte ich den Autofilter drüber laufen lassen, wenn ich einen in mein "Suchfeld" etwas eingebe.
Ich versuche verzweifelt die Formel in eine If Schleife zu packen, sodass wenn er den Begriff in Spalte 6 nicht findet, dann in 5 geht, usw. Sollte er den Begriff zum Schluss nicht finden, so soll einfach eine MsgBox aufgehen.
folgend Formel benutze ich für die Filterung nach dem Suchbegriff:
"Dim Suchfeld As Range
Sub Suchen_und_filtern()
Set Suchfeld = Worksheets("Datentabelle").Range("E1")
'Filter zurück setzen Worksheets("Datentabelle").Range("Tabelle2").AutoFilter
23.04.2020, 18:38 (Dieser Beitrag wurde zuletzt bearbeitet: 23.04.2020, 18:39 von Klaus-Dieter.)
Hallo,
wenn in sechs Spalten gleiche Inhalte vorkommen können, stimmt meiner Ansicht nach irgend etwas mit deiner Liste nicht. Am besten lädst du mal eine Beispieldatei hoch.
Viele Grüße Klaus-Dieter Der Erfolg hat viele Väter, der Misserfolg ist ein Waisenkind Richard Cobden
wenn in sechs Spalten gleiche Inhalte vorkommen können, stimmt meiner Ansicht nach irgend etwas mit deiner Liste nicht. Am besten lädst du mal eine Beispieldatei hoch.
Hallo Klaus-Dieter,
die 6 Spalten haben wie im OP beschrieben unterschiedliche Inhalte ;)
Muss meine Frage aber dennoch anpassen.....
Der Suchfilter soll über alle Spalten laufen und dann die Inhalte filtern.
Habe eine Beispiel Datei angehangen.
d.h. Wenn ich nach "Muster" suche, dann sollen alle Zeilen angezeigt werden, welche das Wort Muster enthalten...
Aktuell habe ich Sie so eingestellt, dass nach der letzten Spalte gesucht wird....
anstatt die einzelnen Spalten mit einer Schleife durchzugehen, würde ich mit der Methode Find erstmal ermitteln, in welcher Spalte sich der Suchbegriff befindet. Und dann nach dieser Spalte filtern. Ich habe deinen Code mal entsprechend ergänzt.
Das funktioniert allerdings nicht (so einfach), wenn der Suchbegriff in mehreren Spalten gleichzeitig vorkommt (z.B. der Name "Hans") Ich denke mal, beim Suchbegriff "Hans" möchtest du sowohl den Hans Albers als auch den Torben Hans angezeigt bekommen… Die Methode Find liefert (erstmal) nur den ersten Treffer.Wenn alle Treffer gefunden werden sollen (in allen Spalten), wird der Code aufwendiger….
Aber die Filtermethode mit dem Autofilter funktioniert sowieso nicht, wenn der Suchbegriff in mehreren Spalten vorkommt und du beide Ergebnisse angezeigt haben willst. Denn du kannst mit dem Autofilter (egal ob manuelle in Excel oder mit VBA) einen Begriff nicht in zwei oder mehreren Spalten gleichzeitig filtern.
Dafür bräuchte man den Spezialfilter, der kann sowas
Aber das ganze geht auch ohne VBA, mit einer Hilfsspalte und Formeln. In der Hilfsspalte wird mit der Funktion SUCHEN für jede Zeile geprüft, ob der Suchbegriff in einer (oder mehreren) Spalte(n) vorkommt. Anschliessend kann dann die Hilfsspalte gefiltert werden.
Oder man listet mit einer INDEX / AGGREGAT-Formel die gefundenen Treffer (basierend auf dem Ergebnis in der Hilfsspalte) in einem separaten Bereich auf. Dann kann man die Hilfsspalte sogar ausblenden. (Oder auch ganz ohne Hilfsspalte, indem man die Formel aus der Hilfsspalte direkt in die AGGREGAT-Formel mit reinpackt…)
Siehe angehängte Beispieldatei
Gruß Fred
Folgende(r) 1 Nutzer sagt Danke an Fred11 für diesen Beitrag:1 Nutzer sagt Danke an Fred11 für diesen Beitrag 28 • Westmaster81