Vlookup - Flere resultater med VBA - VBA -kodeeksempler

Vlookup -tekst

Standard Vlookup -funksjon kan brukes til å finne en verdi i en tabell:

Og vi ville bruke VLOOKUP slik:

= VISNING (A1: 10, "Hund", 2, FALSK)

å gi verdien 30.

På denne listen ser vi imidlertid at Dog forekommer 3 ganger. Standard VLOOKUP -funksjonen returnerer bare verdien som er knyttet til det første elementet i denne listen. Den returnerer ikke 125 eller 9 250 med andre eller tredje forekomst av "hund" i denne listen.

Vlookup flere resultater

Følgende funksjon lar oss angi et område, et uttrykk som skal søkes etter, og forekomsten (resultatnummer) og deretter returnere den tilsvarende verdien:

Funksjon Find_nth_Occurrence (Column_Range As Range, Expression As String, Occ As Integer) Som Double Dim Cell Dim Occurrences_to_date As Integer Find_nth_Occurrence = 1000000 Occurrences_to_date = 0 for hver celle i kolonne_område Hvis Cell.Value = Expression_ Occurces_This_ Occurces_to_date Deretter finner Find_nth_Occurrence = Cell.Offset (0, 1) .Value End If End If Next Cell End Function

Hovedforskjellen mellom dette og standard VLOOKUP -funksjon er at området i dette tilfellet er det eneste området med etiketter - ikke hele dataområdet.
Følgende er en underprogram som kaller denne funksjonen basert på klikkhendelsen fra en kommandoknapp. Det ser ut i området A1: A8 på Sheet2, for den tredje forekomsten av ordet Dog:

Private Sub CommandButton1_Click () Dim Answer As Double Answer = Find_nth_Occurrence (Sheets ("Sheet2"). Område ("A1: A8"), "Dog", 3) MsgBox AnswerEnd Sub

Variabelen "Svar" lagrer resultatet av funksjonen - som deretter vises i en Msgbox på skjermen:

> Men hvis ordet ikke finnes i listen eller frekvensen ikke forekommer, for eksempel at det ikke er en femte forekomst av ordet "hund", returneres verdien til 1.000.000:-
Svar = Find_nth_Occurrence (Sheets ("Sheet2"). Range ("A1: A8"), "Dog", 5)
Eller
Svar = Find_nth_Occurrence (Sheets ("Sheet2"). Range ("A1: A8"), "Horse", 2)

wave wave wave wave wave