Eine der häufigsten Aufgaben in Excel ist das Durchführen von Suchvorgängen zum Abrufen von Daten aus einer Tabelle oder Datenbank. Allerdings können Suchvorgänge manchmal zu Fehlern führen, die zu Problemen in Ihrem VBA-Code führen können. In diesem Artikel erfahren Sie, wie Sie das verwendenWenn, IsError, UndVLookupFunktionen in Excel VBA zusammenführen, um die Fehlerbehandlung durchzuführen und den reibungslosen Ablauf Ihrer Suchvorgänge sicherzustellen. Wir behandeln die Grundlagen jeder Funktion, stellen Beispiele für deren gemeinsame Verwendung bereit und bieten Tipps und Tricks für die Arbeit mit diesen Funktionen in Ihrem VBA-Code. Im letzten Teil des Artikels werden wir einige FAQs mit detaillierten Erklärungen besprechen.
Wir stellen eine Beispielmethode zur Verfügung, um zu demonstrieren, wie wir sie tatsächlich verwendenWenn, IsError,UndVLookupFunktionen in Excel zusammen, um verschiedene Arten von Problemen zu lösen.
Nachfolgend haben wir die kombiniertWennUndIsErrormit demVLookupFunktion insgesamt, um die Gehaltsverteilung der Mitarbeiter basierend auf ihrer Rolle im Unternehmen zu ermitteln.
Inhaltsverzeichnis verstecken
Laden Sie das Übungsarbeitsbuch herunter
Grundlegende Syntax und Verwendung der VBA-Funktionen If, IsError und VLookup
So starten Sie den VBA-Editor in Excel
Ist es möglich, IsError mit VLookup in einer Anweisung in Excel VBA zu verwenden?
3 Fälle der gemeinsamen Verwendung der Excel VBA-Funktionen If, IsError und VLookup
1. Extrahieren von Studentennoten, die durchgefallen sind, aus einer Liste
2. Bestimmen Sie das Gehalt des Mitarbeiters
3. Bestimmen Sie das Budget basierend auf der Schwierigkeit
Probleme bei der gemeinsamen Verwendung von If, IsError und VLookup in Excel VBA
1. Vermeiden Sie Arbeitsblattfunktionen in Excel
2. In Excel wird keine Fehlerbehandlung verwendet
3. Fehler im Datensatz oder in der Formelzuweisung in Excel
So verwenden Sie If mit SVERWEIS in Excel-Formeln und VBA (ein einfacher Vergleich)
Häufig gestellte Fragen
Abschluss
In Verbindung stehende Artikel
Laden Sie das Übungsarbeitsbuch herunter
Laden Sie das folgende Arbeitsbuch herunter, um es selbst zu üben.
VBA arbeitet mit If, IsError und VLookup Together.xlsx
Grundlegende Syntax und Verwendung von VBAWenn,IsError, UndVLookupFunktionen
Die grundlegende Syntax vondie If-Funktionwird unten mit Hilfe eines VBA-Codes angegeben.
- DasWennDie Funktion fungiert als Bedingungsprüfer und ermöglicht es dem Benutzer, Code basierend darauf auszuführen, ob er eine Bedingung erfüllt oder nicht.
If (Bedingung) Then' Code, der ausgeführt werden soll, wenn die Bedingung wahr ist, Else' Code, der ausgeführt werden soll, wenn die Bedingung falsch ist. Ende If
Andererseits ist die grundlegende Syntax vondie IsError-Funktionist unten angegeben,
- DerIsErrorDie Funktion fungiert als Gatekeeper für alle Fehler, die innerhalb eines Codes auftreten. Es wird logisch zurückgegebenWAHRoderFALSCHbasierend darauf, ob innerhalb der Klammer ein Fehler auftritt oder nicht.
Dim result As Variantresult = 10 / 0If IsError(result) ThenMsgBox "Error: " & resultElseMsgBox "Result: " & resultEnd If
- Abschließend stellen wir die grundlegende Syntax von vordie VLookup-Funktion. Der Hauptzweck derVLookupDie Funktion besteht darin, bestimmte Werte innerhalb eines Zellbereichs zu finden und dann Werte aus einer bestimmten Spalte mit exakten oder nominalen Übereinstimmungen zurückzugeben.
Dimmen Sie das Ergebnis als VariantDim. Lookup_value als Variant. Ergebnis
- Im obigen Code ist dieVLookupDie Funktion durchsucht tatsächlich den Lookup-Wert im angegebenen Tabellenarray und die im Spaltenindex im Tabellenarray gespeicherten Rückgabewerte.VLookupwird häufig zum Vergleichen zweier Tabellen und zum Finden von Werten von einer Tabelle zur anderen verwendet.
Notiz:
DerVLookupDie Funktion ist Teil des Anwendungsobjekts inVBADaher muss es mit dem Anwendungspräfix aufgerufen werden. Außerdem ist das Argument „range_lookup“ optional und „False“ wird verwendet, um im obigen Beispiel eine exakte Übereinstimmung durchzuführen.
So starten Sie den VBA-Editor in Excel
Sie können das ganz einfach startenVBAEditor durch Drücken vonAlt+F11oder mit derVisual BasicBefehl von derEntwicklerTab.
- Gehen Sie zunächst zumEntwicklerRegisterkarte und klicken Sie dann aufVisual Basic.
- Dann geh zuEinfügung>Modul.
- Es öffnet sich ein Editorfenster. Dort können Sie Ihren Code eingeben.
Notiz:
Auf jeden Fall, wenn Sie das nicht finden könnenEntwicklerRegisterkarte im Menüband, dann müssen Sie es tunAktivieren Sie die Registerkarte „Entwickler“.aus den Optionen.
Ist es möglich, IsError mit zu verwenden?VLookupin einer Anweisung in Excel VBA?
Das können wir auf jeden Fall gebrauchenIsErrorFunktion neben demVLookupFunktion.Der IsErrorDie Funktion fungiert tatsächlich als Gatekeeper für alle Arten von Fehlern. Wenn also ein Fehler auftritt, wird derIsErrorerkennt den Fehler und gibt logisch zurückWAHR. Basierend auf diesem Wert können Benutzer Maßnahmen ergreifen und Code ändern.
Zum Beispiel der folgende Code:
Dim lookupValue As VariantDim result As VariantlookupValue = "John"result = Application.VLookup(lookupValue, Range("A1:B10"), 2, False)If IsError(result) ThenMsgBox "Error: " & resultElseMsgBox "Result: " & resultEnd Wenn
Dieser Code wird im folgenden Datensatz platziert.
DerVLookupDie Funktion sucht im Zellbereich nach dem SuchwertA1:B10.Wenn in diesem Bereich ein Problem auftritt, z. B. ein nicht gefundener Wert oder ein Bereich außerhalb des Grenzwerts, wird ein Fehler angezeigtVLookupDie Funktion gibt TRUE zurück und daher wird das Meldungsfeld mit der Meldung „Fehler"wird auftauchen. Andernfalls wird das Ergebnis einfach angezeigt.
3 Fälle der gemeinsamen Verwendung der Excel VBA-Funktionen If, IsError und VLookup
Wir werden drei separate Beispiele dafür vorstellen, wie die Kombination vonWENN,IsError, UndVLookupFunktionen in Excel VBA können verschiedene Probleme problemlos lösen. Um Kompatibilitätsprobleme zu vermeiden, versuchen Sie, die zu verwendenExcel 365Bearbeitung.
1. Extrahieren von Studentennoten, die durchgefallen sind, aus einer Liste
Hier werden wir anhand ihrer Prüfungsnoten die Studierenden ermitteln, die die Prüfung nicht bestanden haben, und sie im Bereich Zelle präsentierenD5:D11mit der Kombination vonWenn,IsError,UndVLookupFunktionen. Die Schüler, deren Noten über 60 liegen, werden einfach vorgeführtBestanden.Und den anderen Leuten werden ihre Punkte und Namen nebeneinander angezeigt.
Die Ausgabe wird etwa wie das folgende Bild aussehen:
Schritte:
- Öffnen Sie zu Beginn dieVBAÖffnen Sie das Editorfenster, indem Sie die Tastenkombination drückenAlt+F11.
- Und geben Sie dann den folgenden Code in das Codefenster ein.
Sub Student_Evaluation()Set rng1 = Application.InputBox("Studentennamen auswählen", "Bereichsauswahl", Typ:=8)Set rng2 = Application.InputBox("Bereich mit Namen und Noten auswählen", _"Bereichsauswahl", Typ :=8)Setze rng3 = Application.InputBox("Ausgabebereich auswählen", "Bereichsauswahl", Typ:=8)Für i = 1 To rng1.Rows.CountstudentName = rng1.Cells(i, 1).ValuestudentMark = rng2 .Cells(i, 2).ValueIf IsError(Application.VLookup(studentName, rng2, 2, False)) Thenrng3.Cells(i, 1).Value = ""ElseIf studentMark < 60 Thenrng3.Cells(i, 1). Value = studentName & " - " & studentMarkElserng3.Cells(i, 1).Value = "Passed"End IfNext iEnd Sub
Aufschlüsselung des VBA-Codes
Sub Student_Evaluation()
Dies ist der Beginn der Subroutine mit dem Namen Student_Evaluation. Es handelt sich um ein Makro, das Eingaben des Benutzers entgegennimmt und auf der Grundlage dieser Eingaben einige Aktionen ausführt.
Sub Student_Evaluation()
Diese Codezeile fordert den Benutzer auf, einen Bereich mit Schülernamen auszuwählen. Die InputBox-Funktion zeigt ein Dialogfeld an, in dem der Benutzer einen Bereich auswählen kann. Der ausgewählte Bereich wird dann der Variablen rng1 zugewiesen.
Set rng2 = Application.InputBox("Bereich mit Namen und Markierungen auswählen", "Bereichsauswahl", Typ:=8)
Diese Codezeile fordert den Benutzer auf, einen Bereich auszuwählen, der die Namen der Schüler und ihre Noten enthält. Die InputBox-Funktion zeigt ein Dialogfeld an, in dem der Benutzer einen Bereich auswählen kann. Der ausgewählte Bereich wird dann der Variablen rng2 zugewiesen.
Set rng2 = Application.InputBox("Bereich mit Namen und Markierungen auswählen", "Bereichsauswahl", Typ:=8)
Diese Codezeile fordert den Benutzer auf, einen Ausgabebereich auszuwählen, in dem die Ergebnisse angezeigt werden. Die InputBox-Funktion zeigt ein Dialogfeld an, in dem der Benutzer einen Bereich auswählen kann. Der ausgewählte Bereich wird dann der Variablen rng3 zugewiesen.
Für i = 1 bis rng1.Rows.Count
Dies ist eine Schleife, die jede Zeile im rng1-Bereich durchläuft, die die Namen der Schüler enthält.
studentName = rng1.Cells(i, 1).Value
studentMark = rng2.Cells(i, 2).Value
Diese Codezeilen weisen den Variablen studentName bzw. studentMark den Wert des aktuellen Studentennamens und der aktuellen Markierung zu.
Wenn IsError(Application.VLookup(studentName, rng2, 2, False)) Dann
Dies ist eine bedingte Anweisung, die prüft, ob der Schülername im rng2-Bereich vorhanden ist (der die Namen der Schüler und ihre Noten enthält). Wenn der Name des Schülers nicht gefunden wird, wird die Ausgabebereichszelle für diesen Schüler leer gesetzt.
ElseIf studentMark < 60 Thenrng3.Cells(i, 1).Value = studentName & " - " & studentMark
Wenn der Schülername im RNG2-Bereich gefunden wird und die Schülernote weniger als 60 beträgt, wird die Ausgabebereichszelle für diesen Schüler auf den Schülernamen und die mit einem Bindestrich verbundene Marke gesetzt.
Elserng3.Cells(i, 1).Value = "Bestanden"
Wenn der Name des Schülers im RNG2-Bereich gefunden wird und die Note des Schülers größer oder gleich 60 ist, wird die Ausgabebereichszelle für diesen Schüler auf „Bestanden“ gesetzt.
Als nächstes i
Dies ist das Ende der Schleife. Der Code innerhalb der Schleife wird für jede Zeile im rng1-Bereich ausgeführt.
End Sub
Das ist das Ende des Unterprogramms. Insgesamt ermöglicht dieser Code dem Benutzer die Auswahl von Bereichen mit Schülernamen und -noten sowie einen Ausgabebereich, in dem die Ergebnisse angezeigt werden. Anschließend durchläuft es jede Zeile im Schülernamensbereich, prüft, ob der Schülername im Notenbereich vorhanden ist, und zeigt den Schülernamen und die Note oder „Bestanden“ im Ausgabebereich an, je nachdem, ob die Note unter oder über 60 liegt.
- Drücken Sie nach Eingabe des Codes die TasteF5oder derLaufenKlicken Sie auf die Befehlsschaltfläche, wie im Bild unten gezeigt.
- Nachdem Sie den Code ausgeführt haben, wird der erste Eingabebereich angezeigt, in dem Sie nach dem Namen des Schülers gefragt werden.
- Hier müssen Sie den Namensbereich des Studierenden eingeben. Wir haben ausgewähltB5:B11.
- Drücken SieEingebendanach.
- Dann eine weitere Bereichsauswahl, bei der Sie den Bereich der Zelle eingeben müssen, der die Namen und Noten der Schüler enthält.
- Aus diesem ausgewählten Bereich werden wir die Übereinstimmung mit dem Namen des Schülers finden. Wir wählen ausB5:C11.
- Drücken SieEingebendanach.
- Gleich danach werden Sie nach dem Ausgabebereich gefragt, in dem Sie Ihre Ergebnisse ablegen möchten.
- Wir haben ausgewähltD5:D11.
- Drücken SieEingebendanach.
- Jetzt können Sie sehen, dass die Schüler, die bestanden haben, angezeigt werden und der Name des nicht bestandenen Schülers mit seinen Noten im Bereich der Zelle angezeigt wirdD5:D11.
Der gesamte Vorgang kann im folgenden Video zusammengefasst und gezeigt werden.
Ich hoffe, dieser Fall hat Ihnen eine Idee gegeben, das zu verwendenWenn, IsError,UndVLookupFunktionen zusammen in Excel VBA.
Weiterlesen:So verwenden Sie Excel VBA VLookup in einer Schleife
2. Bestimmen Sie das Gehalt des Mitarbeiters
Dies ist der Hauptdatensatz, an dem wir arbeiten müssen. Hier haben wir dasName des Mitarbeitersund ihre Berufsbezeichnung oder ihre berufliche Rolle. Jetzt müssen wir ihre bestimmenGehaltbasierend auf ihrer Rolle im ZellbereichC11:C14.
Das Ergebnis wird in etwa so aussehen.
Schritte:
- Öffnen Sie zu Beginn dieVBAÖffnen Sie das Editorfenster, indem Sie die Tastenkombination drückenAlt+F11.
- Und geben Sie dann den folgenden Code in das Codefenster ein.
Sub Salary_Find()Set rng1 = Application.InputBox("Managernamen und Berufsbezeichnung auswählen", "Bereichsauswahl", Typ:=8)Set rng2 = Application.InputBox("Bereich mit Gehaltsstruktur auswählen", "Bereichsauswahl", Typ:=8)Setzen Sie rng3 = Application.InputBox("Ausgabebereich auswählen", "Bereichsauswahl", Typ:=8)For i = 1 To rng1.Rows.CountManName = rng1.Cells(i, 2).Valuesalary = rng2.Cells(i, 2).ValueIf IsError(Application.VLookup(ManName, rng2, 2, False)) Thenrng3.Cells(i, 1).Value = ""Elserng3.Cells(i, 1).Value = Application .VLookup(ManName, rng2, 2, False)End IfNext iEnd Sub
Code-Aufschlüsselung
Sub Salary_Find()
Dies ist der Beginn der Subroutine namens Salary_Find. Es handelt sich um ein Makro, das Eingaben des Benutzers entgegennimmt und auf der Grundlage dieser Eingaben einige Aktionen ausführt.
Set rng1 = Application.InputBox("Managernamen und Berufsbezeichnung auswählen", "Bereichsauswahl", Typ:=8)
Diese Codezeile fordert den Benutzer auf, einen Bereich auszuwählen, der Managernamen und ihre Berufsbezeichnungen enthält. Die InputBox-Funktion zeigt ein Dialogfeld an, in dem der Benutzer einen Bereich auswählen kann. Der ausgewählte Bereich wird dann der Variablen rng1 zugewiesen.
Set rng2 = Application.InputBox("Bereich mit Gehaltsstruktur auswählen", "Bereichsauswahl", Typ:=8)
Diese Codezeile fordert den Benutzer auf, einen Bereich auszuwählen, der die Gehaltsstruktur enthält. Die InputBox-Funktion zeigt ein Dialogfeld an, in dem der Benutzer einen Bereich auswählen kann. Der ausgewählte Bereich wird dann der Variablen rng2 zugewiesen.
Set rng3 = Application.InputBox("Ausgabebereich auswählen", "Bereichsauswahl", Typ:=8)
Diese Codezeile fordert den Benutzer auf, einen Ausgabebereich auszuwählen, in dem die Ergebnisse angezeigt werden. Die InputBox-Funktion zeigt ein Dialogfeld an, in dem der Benutzer einen Bereich auswählen kann. Der ausgewählte Bereich wird dann der Variablen rng3 zugewiesen.
Für i = 1 bis rng1.Rows.Count
Dies ist eine Schleife, die jede Zeile im rng1-Bereich durchläuft, die die Managernamen und Berufsbezeichnungen enthält.
ManName = rng1.Cells(i, 2).Value
Excel-VBA-Fehlersuche
Diese Codezeilen weisen den Variablen ManName bzw. Gehalt den Wert des aktuellen Managernamens und Gehalts zu.
If IsError(Application.VLookup(ManName, rng2, 2, False)) Thenrng3.Cells(i, 1).Value = ""
Dies ist eine bedingte Anweisung, die prüft, ob der Name des Managers im RNG2-Bereich (der die Gehaltsstruktur enthält) vorhanden ist. Wenn der Name des Managers nicht gefunden wird, wird die Ausgabebereichszelle für diesen Manager auf leer gesetzt.
Anders
rng3.Cells(i, 1).Value = Application.VLookup(ManName, rng2, 2, False)
Wenn der Managername im rng2-Bereich gefunden wird, wird die Ausgabebereichszelle für diesen Manager basierend auf dem entsprechenden Gehalt festgelegtVLookupFunktion.
Als nächstes i
Dies ist das Ende der Schleife. Der Code innerhalb der Schleife wird für jede Zeile im rng1-Bereich ausgeführt.
End Sub
Das ist das Ende des Unterprogramms. Insgesamt ermöglicht dieser Code dem Benutzer die Auswahl von Bereichen für Managernamen, Berufsbezeichnungen und Gehaltsstrukturen sowie einen Ausgabebereich, in dem das Gehalt für jeden Manager angezeigt wird. Anschließend durchläuft es jede Zeile im Bereich „Managername“, prüft, ob der Managername im Bereich „Gehaltsstruktur“ vorhanden ist, und zeigt das entsprechende Gehalt im Ausgabebereich an.
- Drücken Sie nach Eingabe des Codes die TasteF5oder derLaufenKlicken Sie auf die Befehlsschaltfläche, wie im Bild unten gezeigt.
- Nach dem Drücken derLaufenKlicken Sie auf die Schaltfläche. Sie werden aufgefordert, das einzugebenName des Managersund dasBerufsbezeichnung.
- Wir haben ausgewähltB5:C8
- Drücken SieEingebendanach.
- Anschließend werden Sie aufgefordert, den Bereich einzugeben, der die Gehaltsstruktur der Mitarbeiter enthält.
- Wir haben ausgewähltE5:F7.
- Drücken SieEingebendanach.
- Im letzten Schritt werden Sie aufgefordert, den Ausgabebereich einzugeben, in dem das Ausgabeergebnis mit dem Gehalt jedes Mitarbeiters angezeigt wird.
- Wir wählen ausC11:C14.
- KlickenOKdanach.
- Nach dem DrückenOK, Sie werden sehen, dass der Bereich der ZelleC11:C14ist jetzt gefüllt mitGehaltWert jedes Mitarbeiters.
Der gesamte Vorgang wird nun in einem einzigen Video unten gezeigt:
Weiterlesen:Excel VBA Vlookup mit mehreren Kriterien (3 Beispiele)
3. Bestimmen Sie das Budget basierend auf der Schwierigkeit
Im folgenden Beispiel stellen wir die Zuteilung des Budgets basierend auf dem Schwierigkeitsgrad im Zellbereich darC11:C14.Der Projektname wird in der im Zellbereich angezeigten Budgetzuweisungsstruktur durchsuchtG5:G8und geben Sie dann die Budgetzuweisung im Zellbereich zurückC11:C14.
Die Ausgabe wird in etwa wie das folgende Bild aussehen
Schritte:
- Öffnen Sie zu Beginn dieVBAÖffnen Sie das Editorfenster, indem Sie die Tastenkombination drückenAlt+F11.
- Geben Sie dann den folgenden Code in das Code-Editor-Fenster ein.
Sub budget_alloation()Set rng1 = Application.InputBox("Projektnamen und Schwierigkeitsgrad auswählen", _"Bereichsauswahl", Typ:=8)Set rng2 = Application.InputBox("Bereich auswählen, der die Budgetstruktur enthält", _"Bereichsauswahl ", Typ:=8)Setzen Sie rng3 = Application.InputBox("Ausgabebereich auswählen", "Bereichsauswahl", Typ:=8)Für i = 1 Zu rng1.Rows.CountManName = rng1.Cells(i, 2). Valuesalary = rng2.Cells(i, 2).ValueIf IsError(Application.VLookup(ManName, rng2, 2, False)) Thenrng3.Cells(i, 1).Value = ""Elserng3.Cells(i, 1).Value = Application.VLookup(ManName, rng2, 2, False)End IfNext iEnd Sub
Code-Aufschlüsselung
Unterbudget_alloation()
Die Sub-Anweisung gibt den Beginn einer Subroutine an und der Name der Subroutine ist budget_allocation().
Set rng1 = Application.InputBox("Projektnamen und Schwierigkeitsgrad auswählen", _"Bereichsauswahl", Typ:=8)
Diese Codezeile fordert den Benutzer auf, einen Bereich auszuwählen, der Projektnamen und deren Schwierigkeitsgrad enthält. Die InputBox-Funktion zeigt ein Dialogfeld an, in dem der Benutzer einen Bereich auswählen kann. Der bevorzugte Bereich wird dann der Variablen rng1 zugewiesen.
Set rng2 = Application.InputBox("Bereich auswählen, der die Budgetstruktur enthält", _"Bereichsauswahl", Typ:=8)
Diese Codezeile fordert den Benutzer auf, einen Bereich auszuwählen, der die Budgetstruktur enthält. Die InputBox-Funktion zeigt ein Dialogfeld an, in dem der Benutzer einen Bereich auswählen kann. Der bevorzugte Bereich wird dann der Variablen rng2 zugewiesen.
Set rng3 = Application.InputBox("Ausgabebereich auswählen", "Bereichsauswahl", Typ:=8)
Diese Codezeile fordert den Benutzer auf, einen Ausgabebereich auszuwählen, in dem die Ergebnisse angezeigt werden. Die InputBox-Funktion zeigt ein Dialogfeld an, in dem der Benutzer einen Bereich auswählen kann. Der ausgewählte Bereich wird dann der Variablen rng3 zugewiesen.
Für i = 1 bis rng1.Rows.Count
Die For-Schleife wird verwendet, um jede Zeile in dem vom Benutzer in rng1 ausgewählten Bereich zu durchlaufen.
ManName = rng1.Cells(i, 2).Valuesalary = rng2.Cells(i, 2).Value
Innerhalb der Schleife werden die Variablen „ManName“ und „salary“ auf die Werte der Zellen in der aktuellen Zeile von rng1 bzw. rng2 gesetzt.
If IsError(Application.VLookup(ManName, rng2, 2, False)) Thenrng3.Cells(i, 1).Value = ""Elserng3.Cells(i, 1).Value = Application.VLookup(ManName, rng2, 2, Falsch)Ende wenn
Eine If-Anweisung prüft mithilfe von, ob der Wert von ManName in der ersten Spalte von rng2 gefunden werden kannVLookupFunktion. Wenn der Wert nicht gefunden wird, wird die Zelle im Ausgabebereich, die der aktuellen Zeile in rng1 entspricht, auf eine leere Zeichenfolge gesetzt.
Wenn der Wert gefunden wird, wird die Zelle im Ausgabebereich auf den Wert in der zweiten Spalte der Zeile gesetzt, die den passenden Wert von ManName in rng2 enthält.
Als nächstes i
Die Next-Anweisung markiert das Ende der For-Schleife.
End Sub
Der Code scheint unvollständig oder fehlerhaft zu sein, da er ManName- und Gehaltsvariablen inkonsistent verwendet und die Berechnung der Budgetzuweisung fehlt. Zur weiteren Unterstützung sind weitere Informationen zum gewünschten Budgetzuweisungsprozess erforderlich.
- Drücken Sie nach Eingabe des Codes die TasteF5oder derLaufenKlicken Sie auf die Befehlsschaltfläche, wie im Bild unten gezeigt.
- Nachdem Sie den Code ausgeführt haben, werden Sie aufgefordert, den Eingabebereich einzugeben, der den Projektnamen und den Schwierigkeitsgrad enthält.
- Wir wählen ausC5:D8.
- Drücken SieEingebendanach.
- Dann fragt ein weiteres Bereichseingabefeld nach demHaushaltsstrukturder Mitarbeiter.
- Wir treten einF5:G8,
- Drücken SieEingeben.
- Geben Sie dann den Ausgabewert einC11:C14im Bereichsfeld.
- KlickenOKdanach.
- Dann werden wir sehen, dass das Budget der Projekte jetzt im Zellbereich vorhanden istC11:C14
Der gesamte Vorgang wird nun im folgenden Video gezeigt.
Weiterlesen:So verwenden Sie Excel VBA VLookup mit benanntem Bereich (5 Beispiele)
Probleme bei der VerwendungWenn,IsError, UndVLookupZusammen in Excel VBA
Während der Verwendung desVLookupIn Kombination mit anderen Funktionen treten manchmal seltsame Probleme und Fehler auf. Dafür gibt es viele verschiedene Gründe, im Folgenden werden jedoch nur einige davon erörtert.
1. Vermeiden Sie Arbeitsblattfunktionen in Excel
In einigen Fällen ist dieVLookupFunktionen können Fehler wie Laufzeitfehler in Excel VBA auslösen. Diese Fehler sind in den meisten Fällen vermeidbar. Der Hauptgrund für diese Fehler ist die Verwendung der WorksheetFunction anstelle der reinen Anwendungsoption. Wie im folgenden Code:
Sub use_of_worksheet_function()Output = Application.WorksheetFunction.VLookup(Range("A1"), Range("B1:C4"), 2, False)Debug.Print OutputEnd Sub
Wenn wir hier die Arbeitsblattfunktion verwenden, dann ist der Wert in der ZelleA1findet sich nicht in derB1:C4, dann kommt es zu einem Laufzeitfehler. Um dieses Problem zu beheben, können wir nur die Anwendung anstelle der Arbeitsblattfunktion verwenden, wie im folgenden Code gezeigt:
Sub use_of_worksheet_function()Output = Application.VLookup(Range("A1"), Range("B1:C4"), 2, False)Debug.Print OutputEnd Sub
Wenn im Datensatz ein Problem auftritt, liegt kein Laufzeitfehler vor, sondern es wird im unmittelbaren Fenster eine Warnung angezeigt. Und natürlich können Sie das immer verwendenIsErrorin Kombination mit demWennFunktion, um solche Situationen zu vermeiden.
2. In Excel wird keine Fehlerbehandlung verwendet
Wenn keine Fehlerbehandlung verwendet wird, können unerwünschte Fehler den Fluss der Codeleistung beeinträchtigen. Um Probleme dieser Art zu vermeiden, verwenden Sie Fehlerbehandlungsoperatoren wie „Bei Fehler…Gehe zu“.
Wenn ein Fehler auftritt, springt der Code an eine andere Stelle, um den Fehler zu vermeiden und den Codefluss aufrechtzuerhalten.
Sub use_of_worksheet_function()On Error Resume NextOutput = Application.WorksheetFunction.VLookup(Range("A1"), Range("B1:C4"), 2, False)Debug.Print OutputEnd Sub'Im vorherigen Code wird der Code fortgesetzt wie üblich, wenn ein Fehler vorliegt.Sub use_of_worksheet_function()On Error GoTo ErrorHandlerOutput = Application.WorksheetFunction.VLookup(Range("A1"), Range("B1:C4"), 2, False)ErrorHandler:MsgBox "Error: " & Err.DescriptionErr.ClearDebug.Print OutputEnd Sub
Wenn im vorherigen Code ein Fehler im Ausgabeteil auftritt, springt der Code zum Fehlerbehandlungsteil, wo der Code eine Meldung anzeigt, dass im Code ein Fehler vorliegt.
Benutzer können diesen Teil ganz einfach an ihre Bedürfnisse anpassen.
3. Fehler im Datensatz oder in der Formelzuweisung in Excel
In vielen Fällen ist der Hauptgrund dafürVLookupFunktion funktioniert nicht und zeigt an, dass der Fehler auf den fehlerhaften Datensatz und die fehlerhafte Formelzusicherung zurückzuführen ist.
Zum Beispiel dieVLookupDie Funktion findet die Daten tatsächlich in einem anderen Zellbereich und gibt die gewünschten Tabellenspaltenwerte zurück. Wenn nun die Daten nicht im Zielzellenbereich gefunden werden, gibt der Code einen Fehler zurück. Und diese Daten werden nicht gefunden, wenn ein falscher Zieldatumsbereich vorhanden ist.
Beachten Sie den Datensatz und den Code unten. Hier müssen wir den Zellenbereich des Mitarbeiternamens und der Gehaltsstruktur finden. Wenn eine Übereinstimmung gefunden wird, wird das Gehalt im Bereich der Zelle zurückgegebenC11:C14.In diesem Fall sollte der Zielbereich der Zellen seinE5:F7.
Wenn aber trotzdem der Code verändert wird und der falsche Zielbereich von Zellen zugewiesen wird, kann es zu einem Fehler und fehlerhaften Ergebnis kommen.
Im folgenden Fall hat der Benutzer ausgewähltF5:G7anstatt derE5:G7Dies kann zu einem leeren Ausgabebereich führen, da der Eingabebereich keine passende Übereinstimmung im finden kannE5:F7Bereich.
So verwenden Sie If mit SVERWEIS in Excel-Formeln und VBA (ein einfacher Vergleich)
1. Verwendung einer generischen Formel
Natürlich können Sie a verwendenSVERWEISFunktion mit einer WENN-Funktion. Durch die Kombination dieser beiden Funktionen können Sie dem Gerät eine weitere Steuerungsebene hinzufügenSVERWEISFunktion.
Wir haben zum Beispiel die Kombination der IF-Funktion mit derSVERWEISFunktion.
Im folgenden Beispiel ermitteln wir, ob ein Produktwert größer oder kleiner als 2 Dollar ist oder nicht.
Wir haben die folgende Formel in die Zelle eingegebenF6:
=IF(SVERWEIS(F5,$B$5:$D$9,3,FALSE)>=2,"Preis >= 2,00 $","Preis < 2,00 $")
2. Verwenden eines VBA-Makros
Sie können auch den folgenden Code im Codefenster verwenden, um anzuzeigen, ob die Preise mehr als 2 Dollar betragen oder nicht.
Geben Sie im Code-Editor den folgenden Code ein und führen Sie ihn dann durch Drücken von ausF5oder derLaufenBefehl.
Sub IF_with_VLOOKUP()If Application.VLookup(Range("F5"), Range("B5:D9"), 3, False) >= 2 ThenActiveSheet.Cells(6, 6).Value = "The Product Price>=2 $"ElseActiveSheet.Cells(6, 6).Value = "Der Produktpreis <2$"End IfEnd Sub
Häufig gestellte Fragen
1. Wie verwende ich VLOOKUP mit ISERROR
Ja, Sie können das verwendenSVERWEISFunktion in Kombination mit demIFEHLERFunktion. Verwendung derIFEHLERDurch die Funktion werden fehlerbedingte Probleme erheblich reduziert. Beachten Sie den folgenden Code. Hier mit derSVERWEISFunktion wir gehen Ergebnisse.
Und im nächsten Bild können wir sehen, dass wir das bekommen habenSVERWEISFunktionen gekoppelt mit derIFEHLERFunktionen. DasIFEHLERFunktion schützt dieSVERWEISFunktionsausgabe von jeder Art von Fehlerausgabe.
2. Kann ich eine SVERWEIS-Funktion mit einer WENN-Funktion verwenden?
Natürlich können Sie a verwendenSVERWEISFunktion mit einer WENN-Funktion. Durch die Kombination dieser beiden Funktionen können Sie dem Gerät eine weitere Steuerungsebene hinzufügenSVERWEISFunktion.
Wir haben zum Beispiel die Kombination der IF-Funktion mit der VLOOKUP-Funktion.
Im folgenden Beispiel ermitteln wir, ob ein Produktwert größer oder kleiner als 2 Dollar ist oder nicht.
Wir haben die folgende Formel in die Zelle eingegebenF6
=IF(SVERWEIS(F5,$B$5:$D$9,3,FALSE)>=2,
„Preis >= 2,00 $“, „Preis < 2,00 $“)
3. Wie gehen Sie mit einem SVERWEIS-Fehler in VBA um?
Wir können mit einem umgehenVLookupFehler in Excel VBA auf verschiedene Weise.
Der nützlichste Weg, diese Art von Fehlern zu vermeiden, ist die Verwendung von On Error Resume Next
Bei Fehler fortsetzen Nextresult = Application.WorksheetFunction.VLookup(lookup_value, Range("A1:B5"), 2, False)
Hinzufügen von OnError Resume Next vor demVLookupDie Funktion veranlasste den Code tatsächlich, vorwärts zu springen, wenn Anzeichen eines Fehlers vorliegen.
Eine andere Möglichkeit ist die Verwendung von Err. Zahlenanweisung, wie im folgenden Code.
Wenn Err.Number <> 0 ThenMsgBox „Wert nicht gefunden“Err.ClearElseMsgBox „Ergebnis:“ & resultEnd If
Hier können wir auswerten, ob bereits ein Fehler aufgetreten ist, und ihn dann zählen, wenn die Anzahl größer als 0 ist, was bedeutet, dass ein Fehler vorliegt. Anschließend zeigt der Code ein Meldungsfeld an, das besagt, dass kein Wert gefunden wurde.
Andernfalls geht der Code weiter und zeigt das beabsichtigte Ergebnis an.
4. Kann ich VLOOKUP unter zwei Bedingungen verwenden?
Das können Sie auf jeden FallSVERWEISmit zwei separaten Bedingungen oder ich kann Suchwert sagen. Es gibt jedoch einen Workaround, da Sie dies nicht direkt mit der SVERWEIS-Funktion allein tun können. Sie müssen eine Hilfsspalte verwenden, die Sie bei diesem Verfahren unterstützt.
Wie unten möchten wir zwei separate Kriterien wie beide verwendenProjektnameUndSchwierigkeitsgrad. Mit dem KonventionellenSVERWEISFunktion können Sie dies nicht tun. Dazu müssen Sie eine Hilfsspalte erstellen, die beide Kriterienspaltenwerte enthält. Anschließend können Sie in der VLOOKUP-Funktion die Werte der Hilfsspalte als Eingabeargument verwenden.
Abschluss
In diesem ganzen Artikel haben wir besprochen, wie wir das nutzen könnenVLookupFunktion neben demWENNUndIFEHLERExcel VBA-Funktionen im Detail. Gleichzeitig geben wir Antworten auf einige häufig gestellte Fragen. Wenn Sie weitere Hilfe zu Excel-Problemen benötigen, können Sie unsere Website besuchenExzellenz.
In Verbindung stehende Artikel
- Excel VBA zum Vlookup in einer anderen Arbeitsmappe ohne Öffnen
- Excel VBA zum Vlookup von Werten für mehrere Übereinstimmungen (2 Möglichkeiten)
FAQs
What is the alternative of VLOOKUP in MS Excel VBA? ›
The INDEX and MATCH function in VBA combination is the alternative to the VLOOKUP function in excel. In VBA, we do not have the luxury of using the INDEX and MATCH function. The output is the first position found for the given value.
How do I use Iserror and VLOOKUP together? ›To disguise all possible errors that can be triggered by VLOOKUP, you can place it inside of the IF ISERROR formula like this: IF(ISERROR(VLOOKUP(…)), "text_if_error", VLOOKUP(…)) As the result, you are getting a bunch of #N/A errors, which might create an impression that the formula is corrupt.
How do you write an if error in VLOOKUP? ›- =IFERROR(value, value_if_error)
- Use IFERROR when you want to treat all kinds of errors. ...
- Use IFNA when you want to treat only #N/A errors, which are more likely to be caused by VLOOKUP formula not being able to find the lookup value.
When VLOOKUP can't find a value in a lookup table, it returns the #N/A error. In this example, the goal is to remove the #N/A error that VLOOKUP returns when it can't find a lookup value. In general, the best way to do this is to use the IFNA function. However, the IFERROR function can also be used in the same way.
What else can I use instead of VLOOKUP? ›The superior alternative to VLOOKUP is INDEX MATCH. While VLOOKUP works fine in most cases, it tends to reveal flaws when you start using it in large and complex sheets. The INDEX MATCH formula is actually two different functions; INDEX and MATCH.
What is the fastest alternative to VLOOKUP? ›INDEX MATCH formula
But if we move the lookup table to another worksheet, the formula starts working much faster (~ 5 seconds), which is better than VLOOKUP. Anyway, INDEX MATCH makes up the time with a number of vital benefits.
Did you know that you can use Excel IF statements along with VLOOKUPs? For example, if you wanted to enter a value from a table into a cell, based on what was in another cell, you could start with an IF statement and then enter the VLOOKUP in the “value if true” part of the IF statement.
What is the difference between VLOOKUP and Xlookup? ›To recap, the key differences between an XLOOKUP and a VLOOKUP are: XLOOKUP can look for values to the left and right of the lookup array, while VLOOKUP is limited to only looking for values to the right of the lookup value column.
What is the combination of if and VLOOKUP? ›One of the most common scenarios when you combine If and Vlookup together is to compare the value returned by Vlookup with a sample value and return Yes / No or True / False as the result. Translated in plain English, the formula instructs Excel to return True if Vlookup is true (i.e. equal to the specified value).
How do I return a blank cell if VLOOKUP is not found? ›When VLOOKUP can't find a value in a lookup table, it returns the #N/A error. You can use the IFNA function or IFERROR function to trap this error. However, when the result in a lookup table is an empty cell, no error is thrown, VLOOKUP simply returns a zero.
What happens if VLOOKUP has no match? ›
If the VLOOKUP function does not find an exact match, it will return the #N/A error. By using the IF and ISNA functions, you can return the Unit Price value if an exact match is found. Otherwise, a 0 value is returned. This allows you to perform mathematical operations on your VLOOKUP results.
Why doesn t VLOOKUP work between workbooks? ›VLOOKUP not working between two sheets
Make sure the external reference to another sheet or a different workbook is correct. When doing a Vlookup from another workbook which is closed at the moment, verify that your formula contains the full path to the closed workbook.
Excel showing formula instead of result could be an output of enabling Show Formulas feature. Chances are you didn't enable it intentionally and you are facing it accidentally. If it is so, you will not get a display of results rather you will see Excel formulas only.
Why is XLOOKUP better than VLOOKUP? ›The XLOOKUP defaults to an exact match where the VLOOKUP defaults to an approximate match. As the exact match is used most often, this setting would make the XLOOKUP more effective. On top of this, the XLOOKUP offers an additional option of an approximate match returning the next larger value.
What is the most powerful lookup in Excel? ›The VLOOKUP function in Excel is a powerful function used to lookup data in a table organized vertically.
What is an Xlookup in Excel? ›The XLOOKUP function searches a range or an array, and then returns the item corresponding to the first match it finds. If no match exists, then XLOOKUP can return the closest (approximate) match.
How do I combine VLOOKUP and conditional formatting? ›- Copy the formula in cell F2.
- Select the entire dataset: A2:D50.
- In the Home tab, select Conditional Formatting and select New Rule.
- In the Conditional Formatting task pane to the right, select Formula from the Rule Type dropdown.
- Paste the formula in the box below the Formula Rule Type.
By using the asterisk “wildcard” (*), within a VLOOKUP, we can lookup values that contain (partial match) certain text, instead of values that match the lookup text exactly.
How do you use the IF formula? ›Use the IF function, one of the logical functions, to return one value if a condition is true and another value if it's false. For example: =IF(A2>B2,"Over Budget","OK") =IF(A2=B2,B4-A4,"")
Why should I use Xlookup? ›Benefits of using Xlookup
It can use an exact match as the default search mode, unlike other search functions on Excel. It can search for both horizontal and vertical data. It can perform a reverse search. It can return entire rows and columns of data instead of a single value.
Why Excel Cannot use Xlookup? ›
error in your XLOOKUP function, the most likely reason is that your lookup array and your return array are not the same size. In my example, the reason the arrays are different sizes is that there is a blank cell at the end of my return array.
How do you do a VLOOKUP and return a value from another column? ›- Select cell C3 and click on it.
- Insert the formula: =VLOOKUP(B3,'Sheet 2'!$ B$3:$C$7,2,0)
- Press enter.
- Drag the formula down to the other cells in the column by clicking and dragging the little “+” icon at the bottom-right of the cell.
Another way to get an Excel IF to test multiple conditions is by using an array formula. To complete an array formula correctly, press the Ctrl + Shift + Enter keys together. In Excel 365 and Excel 2021, this also works as a regular formula due to support for dynamic arrays.
How do you return a value if a cell is blank? ›Sometimes you need to check if a cell is blank, generally because you might not want a formula to display a result without input. In this case we're using IF with the ISBLANK function: =IF(ISBLANK(D2),"Blank","Not Blank")
Does VLOOKUP only return the first match it finds? ›The VLOOKUP function can only return one record. It will return the first record that matches the value you looked for. If your table contains duplicates then VLOOKUP will not be up to the task.
Can you do VLOOKUP in 2 different workbooks? ›The easiest way to make a VLOOKUP formula that refers to a different workbook is this: Open both files. Start typing your formula, switch to the other workbook, and select the table array using the mouse. Enter the remaining arguments and press the Enter key to complete your formula.
Why is VLOOKUP showing NA when value exists? ›The most common cause of the #N/A error is with XLOOKUP, VLOOKUP, HLOOKUP, LOOKUP, or MATCH functions if a formula can't find a referenced value. For example, your lookup value doesn't exist in the source data. In this case there is no “Banana” listed in the lookup table, so VLOOKUP returns a #N/A error.
How do I automate a VLOOKUP in Excel? ›- We need a list of data sorted by the first column.
- In a blank cell that we would like to return a result from the list, type =VLOOKUP(
- Click on the cell where we will enter the value to lookup (this will enter the cell in your formula)
- Hit , (comma)
Check your Excel Options settings. Under the Formulas section, make sure that "Enable iterative calculation" is checked. This can help Excel automatically recalculate your VLOOKUP formula when there are changes in the data.
What is the difference between match and VLOOKUP in VBA? ›The main difference between VLOOKUP and INDEX MATCH is in column reference. VLOOKUP requires a static column reference whereas INDEX MATCH requires a dynamic column reference. With VLOOKUP you need to manually enter a number referencing the column you want to return the value from.
What is the difference between lookup and VLOOKUP in VBA? ›
The main difference between VLOOKUP and LOOKUP functions is the VLOOKUP is limited to vertical lookups only and the LOOKUP function has cross functionality which means that it can perform both vertical lookups and horizontal lookups.
What is the difference between Xlookup and VLOOKUP? ›To recap, the key differences between an XLOOKUP and a VLOOKUP are: XLOOKUP can look for values to the left and right of the lookup array, while VLOOKUP is limited to only looking for values to the right of the lookup value column.
Is there an alternative to VBA Excel? ›Reduce Complexity. Although VLOOKUPs, macros and VBA can work miracles in Excel, too much reliance on them for automating spreadsheets can lead to overly complex and unmaintainable solutions. Power BI provides an alternative to writing complex formulas. Never write another line of VBA in your life!
Should I use VLookup or if? ›VLOOKUP is a powerful function to perform lookup in Excel. It performs a row-wise lookup until a match is found. The IF function performs a logical test and returns one value for a TRUE result, and another for a FALSE result.
Why use INDEX match instead of VLookup? ›While VLookup is great for searching for fields where you know the row, Index Match is much more flexible as you can search by row, or by column, or by both. In these situations its best to use Index Match instead of VLookup.
How to use the match function in VBA? ›- Enter the worksheet property and type a dot to get the list of functions.
- Select the match function or you can also type it.
- Type a starting parenthese to specify the arguments.
- In the arguments, you need to specify the value to look for, the range to look into, and the type of match.
VLookup Range: If using the exact VBA code ensure that the range ("C5:D9") captures the data that you want to return and range ("B5:B9") captures one of the values that you are looking up. Match Range: If using the exact VBA code ensure that the range ("B4:D4") captures the other value that you are looking up.
Can you use Xlookup in VBA? ›The VLOOKUP and XLOOKUP functions in Excel are extremely useful. They can also be used in VBA Coding.
Can you use VLOOKUP in a macro? ›VLOOKUP is one of the most useful and versatile functions in Excel. As you work further with macros it's not uncommon to make your create an Excel VBA VLOOKUP macro. With this you get the ability to reference your tables of data, but automated.
What is Xlookup used for? ›Use the XLOOKUP function to find things in a table or range by row. For example, look up the price of an automotive part by the part number, or find an employee name based on their employee ID.
What is the purpose of Xlookup Excel? ›
The XLOOKUP function in Excel searches a range or an array for a specified value and returns the related value from another column. It can look up both vertically and horizontally and perform an exact match (default), approximate (closest) match, or wildcard (partial) match.
Is Excel VBA still in demand? ›Is VBA Still In Demand? Yes, VBA is still useful and used by individuals interacting with Microsoft products. However, newer languages such as Python, C#, or R can be used to code in place of VBA.
Why not to use VBA in Excel? ›Sometimes writing, testing and debugging the script will take longer than using worksheet features. VBA does not adjust in the way that formulae do when you move data from one worksheet to another, insert a column, delete rows, etc. Example: you have a sheet called February.
Do people still use VBA? ›– Yes, absolutely! VBA is certainly not the most modern programming language, but due to the huge prevalence of Microsoft Office it is still a very relevant language in the year 2022.