Live-Suche in der Excel-Suchmaschine

Wie Du in Excel eine simple Suchmaschine programmieren und einrichten kannst, wurde in einem älteren Beitrag (siehe Suchmaschine programmieren) illustriert. Hier wird nun ergänzt, wie Du eine Live-Suche etablierst, damit direkt nach Eingabe eines Suchkriteriums die Liste auf die entsprechenden Einträge gefiltert wird.

Nehmen wir nach wie vor an, dass in der Zelle "B1" das Suchkriterium steht. Falls sich also diese Zelle ändert, hat die Suchmaschine direkt zu reagieren. Das Makro aus dem Beitrag "Suchmaschine programmieren" ist hierzu nicht in einem Modul abzulegen, sondern direkt im entsprechenden Tabellenblatt (=Tabelle1 (Suchmaschine))!

vbaprojekttabelle

Zudem ist der Code leicht anzupassen, respektive  um nachfolgende zusätzliche Angaben zu ergänzen. Der vollständige Code wird dann weiter unten aufgeführt.

Anstelle von "Sub Suchmaschine()" zu Beginn hat die erste Codezeile zu lauten:

Private Sub worksheet_change(ByVal target As Range)

Zudem ist eine Wenn-Dann-Kondition einzubauen, die auf die Zelle "B1" verweist - und eben beim Anpassen dieser Zelle das Makro automatisch auslöst.

If target.Row = 1 And target.Column = 2 Then

Darauf folgt der gesamte Code der Suchmaschine, abgeschlossen (vor "End Sub") mit dem Befehl:

End If

Der vollständige Code ...

... (nicht in Modul1 sondern im Tabellenblatt direkt, wie oben erwähnt) lautet demnach:

Private Sub worksheet_change(ByVal target As Range)

If target.Row = 1 And target.Column = 2 Then

Range("D2").Select
Selection.AutoFilter
ActiveSheet.Range("$A$2:$D$8").AutoFilter Field:=4, Criteria1:="<>0"

AnzahlTreffer = Application.WorksheetFunction.Subtotal(3, Range("A:A")) - 2

MsgBox ("Insgesamt " & AnzahlTreffer & " Treffer gefunden.")

End If

End Sub

Die Eingabe des Platzhalters/Sternchens (*) erübrigen

Beim Programmieren der Suchmaschine habe ich Dir aufgezeigt, dass das Suchkriterium jeweils mit einem Sternchen vor- und nachher versehen werden sollte - beispielsweise "*Pop*". Um diesem vorzubeugen (es ist also nur noch der Begriff einzugeben, ohne Platzhalter-Symbol), ist die WVERWEIS-Formel minim anzupassen. Wir kombinieren jeweils den Text "*" mit dem Zellbezug auf das Suchkriterium in "B1". Für die Zeile 3 lautet die Formel wie folgt (und kann auf sämtliche weiteren Zeilen herunterkopiert werden):

=WENNFEHLER(WVERWEIS("*"&$B$1&"*";A3:C3;1;FALSCH);0)

Zwei Jahre Excelblog.ch

Liebe Leserinnen und Leser

Es freut mich sehr, Euch mitzuteilen, dass Excelblog.ch diesen Monat bereits seinen zweijährigen Geburtstag feiert! Nach wie vor werden Euch hier hilfreiche Tipps & Tricks im Umgang mit Excel zur Verfügung gestellt und wir sind schon fast bei monatlich 1'000 Aufrufen angelangt! Mein Dank gebührt Euch, dass Ihr stets interessiert auf den Blog zurückkehrt und Euch meine Inhalte anschaut.

Seit bald einem Jahr bin ich zudem als selbständiger Berater tätig und konnte bereits bei diversen Kunden Ablauf- und Reporting-Optimierungen - vorwiegend im Bereich Excel - erreichen. Der Bereich Makros und VBA ist ein wichtiger Bestandteil davon. Seit Kurzem verbreitet sich ein neuer Begriff: "Robotic Process Automation" (RPA). Mit dieser neuen Technologie ist es möglich, systemübergreifende Prozessautomation zu erlangen - ohne manuelle Einwirkungen. Was also Makros innerhalb der Office-Umgebung bewerkstelligen können, erlaubt RPA über sämtliche Applikationen, Ordnerstrukturen und Dokumente hinweg. Die unterschiedlichen Software-Anbieter arbeiten da oft auch mit einem "Rekorder", um die Befehle am Bildschirm direkt aufzuzeichnen. RPA ist eine vielversprechende Technologie und breitet sich rasant aus, es finden sich zudem je länger je mehr Komponenten aus dem Bereich der künstlichen Intelligenz/Artificial Intelligence und Machine Learning. Auch ich setze mich derzeit mit dem Thema RPA stark auseinander und werde sporadisch darüber berichten.

Nun wünsche ich Euch, liebe Leserinnen und Leser, einen weiterhin wundervollen und sonnigen Sommer sowie gute Erholung vom Alltag.

Herzlich, Roman Tobler

Die Formel "SUCHEN" - nach Fragezeichen/Multiplikationszeichen suchen

Die Formel "=SUCHEN" ermöglicht die Suche nach einem bestimmten Zeichen oder einer Zeichenfolge innerhalb eines anderen Textes/einer anderen Zelle. Kombiniert mit beispielsweise der Formel "=TEIL" können so clever Textfragmente aus einer Zelle gezogen werden. Bei Platzhalter wie dem Fragezeichen und dem Multiplikationszeichen (*) funktioniert dies jedoch nicht auf anhin. Hier ein Beispiel mit der Formel "=SUCHEN("*";A1)":

suchenachplatzhalter1

Da es sich beim "*" wie erwähnt um einen Platzhalter handelt, wird ein beliebiges Zeichen bereits an erster Stelle im Text in Zelle "A1" gefunden - das Resultat der Formel ist demnach "1". Die Formel muss deshalb leicht angepasst werden: Es benötigt vor dem Platzhalter-Zeichen eine Tilde ("~"), um zu definieren, dass nach exakt diesem Zeichen gesucht werden soll. Die korrekte Formel lautet demzufolge:

=SUCHEN("~*";A1)

Das Resultat sieht nun wie folgt aus (das Zeichen steht an 11. Stelle im Text in Zelle A1):

suchenachplatzhalter2

Dieses Vorgehen deckt sich auch mit der herkömmlichen Suchfunktion in den Office-Programmen ("CTRL + F"), was im Beitrag "Suchen & Ersetzen eines Multiplikationszeichens/Platzhalters (*)" genauer aufgezeigt wird.