Vlookup - Meerdere resultaten met VBA - VBA-codevoorbeelden

Vlookup-tekst

De standaard Vlookup-functie kan worden gebruikt om een ​​waarde in een tabel te vinden:

En we zouden VERT.ZOEKEN als volgt gebruiken:

=VERT.ZOEKEN(A1:10,"Hond",2,FALSE)

om de waarde 30 te geven.

In deze lijst zien we echter dat Hond 3 keer voorkomt. De standaard VERT.ZOEKEN-functie retourneert alleen de waarde die is gekoppeld aan het eerste item in deze lijst. Het zal de 125 of 9.250 niet retourneren met de 2e of 3e instantie van "hond" in deze lijst.

Vlookup meerdere resultaten

Met de volgende functie kunnen we een bereik, een uitdrukking waarnaar moet worden gezocht en de instantie (resultaatnummer) specificeren en vervolgens de bijbehorende waarde retourneren:

Functie Find_nth_Occurrence(Column_Range As Range, Expression As String, Occ As Integer) As Double Dim Cell Dim Occurrences_to_date As Integer Find_nth_Occurrence = 1000000 Occurrences_to_date = 0 Voor elke cel in Column_Range If Cell.Valuecurr = Expression_to_date Dan Find_nth_Occurrence = Cell.Offset (0, 1). Waarde End If End If Next Cell End Functie

Het belangrijkste verschil tussen dit en de standaard VERT.ZOEKEN-functie is dat in dit geval het bereik het enige labelbereik is - niet het volledige gegevensbereik.
Het volgende is een subroutine die deze functie aanroept op basis van de klikgebeurtenis van een opdrachtknop. Het kijkt in het bereik A1:A8 op Blad2, voor de 3e instantie van het woord Hond:

Private Sub CommandButton1_Click() Dim antwoord als dubbel antwoord = Find_nth_Occurrence(Sheets("Sheet2").Range("A1:A8"), "Dog", 3) MsgBox AnswerEnd Sub

De variabele "Antwoord" slaat het resultaat van de functie op - die vervolgens wordt weergegeven in een Msgbox op het scherm:

>Als het woord echter niet in de lijst kan worden gevonden of als de frequentie niet voorkomt, bijvoorbeeld als er geen 5e instantie is van het woord "Hond", dan wordt de waarde 1.000.000 geretourneerd: -
Answer = Find_nth_Occurrence(Sheets(“Blad2”).Bereik(“A1:A8”), “Hond”, 5)
Of
Answer = Find_nth_Occurrence(Sheets(“Blad2”).Bereik(“A1:A8”), “Paard”, 2)

wave wave wave wave wave