Vlookup ist eine wesentliche Funktion in Excel und ist zu einem wichtigen Bestandteil der Datenverarbeitung geworden. Es bietet einige der Funktionen, die Sie normalerweise mit einer vollständigen Datenbank in Verbindung bringen.
Aber was ist, wenn Sie diese Funktion automatisieren möchten? Ja, das ist möglich, insbesondere wenn Sie wissen, wie man die native Automatisierungssprache von Excel, VBA, verwendet. So können Sie die vlookup-Funktion in Excel VBA automatisieren.
Die Syntax von Vlookup
Die Syntax der vlookup-Funktion ist recht einfach, aber sie hat vier Aspekte, auf die Sie sich konzentrieren müssen, auch wenn Sie sie in Excel VBA automatisieren.
=vlookup (Suchwert, Sucharray, Spaltenindex, exakte_Übereinstimmung/partielle_Übereinstimmung)
Die Argumente der Funktion haben folgende Bedeutung:
- Lookup-Wert: Dies ist der primäre Wert, den Sie im Lookup-Array nachschlagen möchten.
- lookup_array: Dies sind die Quelldaten, die der lookup_value als Referenz verwendet.
- Spaltenindex: Spalte, aus der der Wert zurückgegeben werden soll.
- exakte_Übereinstimmung/teilweise_Übereinstimmung: Verwenden Sie entweder 0 oder 1, um den Übereinstimmungstyp zu bestimmen.
Datenaufbereitung
Dieses Dataset besteht aus zwei Teilen: einer Nachschlagetabelle und den Zieldatenpunkten.
Die Nachschlagetabelle besteht aus drei Spalten, wobei Daten die Felder „Unterkategorie“ und „Produktname“ füllen:
Die Zieltabelle hat übereinstimmende Spalten ohne Daten zu Unterkategorien oder Produktnamen. Beachten Sie, dass die Werte in der Spalte „Bestell-ID“ auch in derselben Spalte in der Nachschlagetabelle vorhanden sind:
Verwenden von Vlookup direkt in einer Excel-Tabelle
Um die Zielspalten B und C zu füllen, können Sie Verwenden Sie die vlookup-Funktion von Excel.
In der Zelle B2, geben Sie die folgende Formel ein:
=SVERWEIS($A2, $F$3:$H$17, 2, 0)
Ebenso in der Zelle C2, geben Sie diese Formel ein:
=SVERWEIS($A2, $F$3:$H$17, 3, 0)
Sie können die Formel von Zelle B2 nach unten bis zum Ende der Spalte, B17, ziehen. Wiederholen Sie diesen Vorgang auch für Spalte C. Die Werte für jeden nachfolgenden Eintrag werden in beiden Spalten automatisch aktualisiert.
Die Werte, die Sie an die vlookup-Funktion übergeben, sind:
- A2: Der Suchwert befindet sich in dieser Zelle.
- F3:H17: Dies besteht aus dem Nachschlagebereich.
- 2/3: Die Referenzspalten, aus denen der Wert abgerufen werden soll.
- 0: Bezeichnet eine exakte Übereinstimmung.
Die Vlookup-Funktion von Excel VBA
Die vlookup-Funktion weist viele Ähnlichkeiten auf, unabhängig davon, ob Sie sie direkt in Excel oder über VBA verwenden. Egal, ob Sie ein Datenanalyst sind, der sich mit Datenzeilen befasst, oder ein Bestandsmanager, der sich regelmäßig mit neuen Produkten befasst, Sie können von der Verwendung von vlookup profitieren.
Wenn Sie mit einem dynamischen Suchbereich arbeiten, ist es immer am besten, Ihre Formeln zu automatisieren, um die wiederholte Anwendung von Formeln in Excel zu vermeiden. Indem Sie Ihre Vlookup-Funktion in VBA automatisieren, können Sie mehrspaltige Berechnungen mit einem einzigen Klick durchführen.
1. Führen Sie das erforderliche Setup durch
Öffnen Sie zunächst den Codierungseditor (drücken Sie Alt + F11 oder navigieren Sie zu Entwickler tab) in einer neuen Excel-Arbeitsmappe und fügen Sie ein Modul hinzu, um mit dem Schreiben Ihres Codes zu beginnen. Fügen Sie im Code-Editor die folgenden Zeilen oben im Codierungsfenster hinzu, um eine Unterroutine zu erstellen:
Sub vlookup_fn1()End Sub
Die Unterroutine ist ein Container für Ihren VBA-Code und ist entscheidend für die erfolgreiche Ausführung. Eine Alternative ist zu Erstellen Sie ein VBA-Benutzerformular um Ihre Benutzeroberfläche interaktiver zu gestalten.
2. Deklarieren Sie Ihre Variablen und erstellen Sie Ihre Referenzbereiche
Zuerst müssen Sie die variablen Datentypen mit deklarieren Abm Stellungnahme:
Dim i als ganze Zahl, lastrow so lang
Als nächstes erstellen Sie eine letzte Reihe -Variable, um den Wert der letzten gefüllten Zeile innerhalb Ihres Nachschlagebereichs zu speichern. Die Lastrow-Funktion verwendet die Ende (xldown) Funktion, um die Endzeilenreferenz innerhalb des angegebenen Bereichs zu berechnen.
In diesem Fall speichert die lastrow-Variable den letzten gefüllten Zeilenwert des Suchbereichs,17.
lastrow = Sheets("Sheet2").Range("F3").End (xlDown).Row
Im obigen Beispiel erstreckt sich die Zieltabelle von A2:C17, während sich die Quelltabelle von erstreckt F2:H17. Die vlookup-Formel durchläuft jeden in Spalte A gespeicherten Wert, sucht ihn in der Quelltabelle und fügt die übereinstimmenden Einträge in die Spalten B und C ein.
Bevor Sie jedoch in die Schleife springen, müssen Sie die Bereichswerte in einer neuen Variablen speichern (mein_bereich), folgendermaßen:
my_range = Sheets("Sheet2").Range("F3:H" & lastrow)
Sie müssen den Startzellenbezug explizit definieren (F3) und die letzte Spaltenreferenz (H). VBA fügt den Zeilenwert automatisch an, um das Lookup-Array zu vervollständigen.
3. Schreiben Sie eine Schleife, um jeden Lookup-Wert zu durchlaufen
Definieren Sie vor dem Schreiben der Schleife den Startzeilenwert, 2. Das Definieren eines Startwerts für Ihren Loop ist unerlässlich, da Sie mit dynamischen Elementen arbeiten. In der Zieltabelle ist Zeile 2 die erste Zeile der Daten. Ändern Sie diesen Wert, wenn Ihre Daten in einer anderen Zeile beginnen.
ich = 2
Sie können eine verwenden tun-während Schleife, um jede Zeile zu verarbeiten, beginnend bei Zeile 2 und endend bei Zeile 17. Wie der Rest des Codes ist dieser Aspekt dynamisch; Die Schleife wird ausgeführt, bis die Bedingung falsch ist. Verwenden Sie die Bedingung, um in der ersten Zelle der aktuellen Zeile nach einem nicht leeren Wert zu suchen.
Do While len (Sheets("Sheet2").Cells (i, 1).value) <> 0
Innerhalb der Schleife können Sie die VLookup-Funktion aufrufen, um die Zellen zu füllen:
Sheets("Sheet2").Cells (i, 2).Value = _ Application. ArbeitsblattFunktion. VLookup (Sheets("Sheet2") _ .Cells (i, 1).Value, my_range, 2, False) Sheets("Sheet2").Cells (i, 3).Value = _ Application. ArbeitsblattFunktion. VLookup (Sheets("Sheet2") _ .Cells (i, 1).Value, my_range, 3, False)
Diese Anweisungen legen den Wert der Zellen in der aktuellen Zeile in den Spalten 2 bzw. 3 fest. Sie verwenden die ArbeitsblattFunktion Objekt zum Aufrufen der VLookup Funktion und übergibt den entsprechenden Wert aus Spalte 1, nach dem gesucht werden soll. Sie übergeben auch den Bereich, den Sie zuvor definiert haben, und den Index der relevanten Spalte, um den endgültigen Wert abzurufen.
Der Vlookup-Code ist fertig, aber Sie müssen die Zeilenvariable jedes Mal um die Schleife herum erhöhen:
ich = ich + 1
Jedes Mal, wenn die Schleife ausgeführt wird, erhöht sie den Wert von ich um 1. Denken Sie daran, dass der Anfangswert der Zeile 2 ist und die Erhöhung jedes Mal erfolgt, wenn die Schleife ausgeführt wird. Verwenden Sie die Schleife Schlüsselwort, um das Ende des Codeblocks der Schleife festzulegen.
Wenn Sie den gesamten Code ausführen, werden die Ergebnisse in beiden Spalten basierend auf den Werten in der Quelltabelle ausgefüllt.
Hier ist der gesamte Code als Referenz:
Sub vlookup_fn1() Dim i As Integer lastrow = Sheets("Sheet2").Range("F3").End (xlDown).Row my_range = Sheets("Sheet2").Range("F3:H" & lastrow) i = 2 Do While Len (Sheets("Sheet2").Cells (i, 1).Value) <> 0 On Error Resume Next Sheets("Sheet2").Cells (i, 2).Value = _ Anwendung. ArbeitsblattFunktion. VLookup (Sheets("Sheet2") _ .Cells (i, 1).Value, my_range, 2, False) Sheets("Sheet2").Cells (i, 3).Value = _ Application. ArbeitsblattFunktion. VLookup (Sheets("Sheet2") _ .Cells (i, 1).Value, my_range, 3, False) i = i + 1 LoopEnd Sub
4. Erstellen Sie eine Schaltfläche zum Ausführen des Codes
Wenn der Code nicht mehr im Weg ist, können Sie in Ihrer Excel-Arbeitsmappe eine Schaltfläche erstellen, um sie mit einem einzigen Klick auszuführen. Fügen Sie Ihre bevorzugte Form in ein leeres Excel-Blatt ein, klicken Sie mit der rechten Maustaste darauf und klicken Sie auf die Makro zuweisen Möglichkeit.
Wählen Sie im Dialogfeld den Namen Ihrer Subroutine aus und klicken Sie auf OK.
Wenn Sie Ihren Code ausführen möchten, klicken Sie auf die Schaltfläche, um zu sehen, wie die Daten sofort ausgefüllt werden.
Verwenden von Excel VBA zum Automatisieren von Suchfunktionen
Excel VBA ist eine flexible Sprache, die gut darauf abgestimmt ist, die Automatisierung innerhalb der verschiedenen Facetten von MS Excel zu vereinfachen. In MS Excel VBA gibt es viele Optionen, von der Automatisierung von Excel-Funktionen bis hin zur automatischen Erstellung aufwändiger Pivot-Tabellen.
Wenn Sie mit verschiedenen Excel-Segmenten arbeiten, können Sie mit verschiedenen Optionen experimentieren, um Ihr Leben einfacher und effizienter zu gestalten.