Excel VBA – Eigene Suchfunktion bauen – bestimmte Zeile finden
Dieser Beitrag ist ein Teil der VBA Grundlagen Serie.
In diesem Beitrag zeige ich Ihnen wie Sie über VBA bestimmte Zeilen eindeutig identifizieren können. Diese Funktionalität erlaubt es Ihnen eine Suchfunktion in Excel zu bauen.
Ich habe bereits eine Tabelle mit Kundennummern und Namen. Mithilfe von VBA wollen wir nun einen Namen zu der gesuchten Kundennummer (Zelle
E1
) finden. Das Ergebnis soll in der Zelle F1
erscheinen.Für das Ergebnis benötigen wir eine Variable vom Typ
Range
.
Sub ZeileFinden() Dim Ergebnis As Range End Sub
Diese Variable wird über den folgenden Befehl gefüllt.
Set Ergebnis = Tabelle1.Columns(1).Find(what:=Tabelle1.Range("E1").Value, _ lookat:=xlWhole)
Zunächst geben wir an in welcher Tabelle wir suchen wollen. Danach sagen wir in welchem Bereich die Suche stattfinden soll. Unsere Kundennummern stehen in der Spalte A
, also in der ersten Spalte. Über den Befehl Find
können Sie nach einem bestimmten Wert suchen. Der gesuchte Wert steht in Tabelle1, Zelle E1
. Damit die Suche nur diese Nummer und keine ähnlichen Nummern findet, verwenden wir das Argument lookat:=xlWhole
.
Falls der entsprechende Wert in der Spalte A
gefunden wurde, so ist die Variable gefüllt. Diese Variable verfügt über bestimmte Koordinaten. Über Attribute .Row
und .Column
können wir die Zeile und die Spalte der Variable eindeutig bestimmen. Sie können es mit der Anweisung Debug.Print Ergebnis.Row
testen. Die siebte Zeile wird im Direktbereich ausgegeben.
Nun können wir das Ergebnis auswerten. Wir wissen, dass der gesuchte Name in der zweiten Spalte der jeweiligen Zeile liegt.
If Ergebnis Is Nothing Then MsgBox "Leider nichts gefunden" Else Tabelle1.Range("F1").Value = Tabelle1.Cells(Ergebnis.Row, 2).Value End If
111 VBA Makros die Ihr Leben leichter machen
Wollen Sie Ihre langweiligen Routineaufgaben loswerden? Möchten Sie Excel an Ihre Bedürfnisse anpassen, Berechnungen automatisieren, eigene Dialogfelder erstellen und vieles mehr? Dieses Buch zeigt Ihnen, wie Sie Ihre Aufgaben schnell und einfach mit VBA erledigen.
Wenn die Variable nicht gefüllt werden könnte, wenn also nichts gefunden wurde, geben wir die entsprechende Meldung aus. Andernfalls wird der Name in die Zelle F1
geschrieben.
Um das Makro zu testen habe ich über Entwicklertools -> Einfügen einen Button hinzugefügt und diesem unser Makro zugewiesen.
Wie Sie sehen können funktioniert das Makro perfekt.
Das komplette Makro:
Sub ZeileFinden() Dim Ergebnis As Range Set Ergebnis = Tabelle1.Columns(1).Find(what:=Tabelle1.Range("E1").Value, _ lookat:=xlWhole) If Ergebnis Is Nothing Then MsgBox "Leider nichts gefunden" Else Tabelle1.Range("F1").Value = Tabelle1.Cells(Ergebnis.Row, 2).Value End If End Sub
Die Beispiel Excel Datei mit dem sofort einsetzbaren Makro und 111+ andere Makros, die Ihr Leben leichter machen, finden Sie hier.
Beeindrucke deinen Chef mit coolen Excel Tricks!
- Lasse dich von deinen Kollegen nicht abhängen!
- Spare Zeit und nutze diese für angenehmere Dinge
- Steigere deine Produktivität und Effizienz
- Es ist leicht - In meinem Newsletter gebe ich Schritt für Schritt Anleitungen die jeder versteht
- Bei der Anmeldung zu meinem Newsletter erhälst du das Buch „Excel Tricks die deinen Chef beeindrucken“ als Willkommensgeschenk.
Quellen und weiterführende Literatur:
Bernd Held – VBA mit Excel: Das umfassende Handbuch
Falls Ihnen dieser Beitrag weitergeholfen hat, wäre es eine sehr nette Anerkennung meiner Arbeit wenn Sie z.B. Ihre Bücher über Amazon bestellen würden. Wenn Sie ein Produkt kaufen, erhalte ich dafür eine Provision. Für Sie ändert sich am Preis des Produktes gar nichts. Ich möchte mich an dieser Stelle jetzt schon für Ihre Unterstützung bedanken.
Hallo,
Vielen Dank für das Script.
Gibt es denn die Möglichkeit das Script so zuändern das es alle treffer anzeigt ?
Wenn ja was muss man ändern damit dieses Script mir alle anzeigt. Und diese
unter einander darstellt?
Hallo Andy,
schau dir den folgenden Beitrag an: https://www.denisreis.com/excel-vba-bestimmte-zeilen-in-eine-andere-tabelle-kopieren/
Hoffe, dass es weiterhilft.
Viele Grüße
Denis
Hallo,
gibt es auch eine Möglichkeit nach 2 Kriterien zu suchen? Sprich suche nach der Kundenummer und den Namen und gib mir den Ort (der dann beispielsweise in Spalte C steht)??