Vlookup - Flere resultater med VBA - VBA -kodeeksempler

Vlookup -tekst

Standard Vlookup -funktionen kan bruges til at finde en værdi i en tabel:

Og vi ville bruge VLOOKUP sådan:

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

for at give værdien 30.

På denne liste ser vi dog, at Dog forekommer 3 gange. Standard VLOOKUP -funktionen returnerer kun værdien, der er knyttet til det første element på denne liste. Det returnerer ikke 125 eller 9.250 med 2. eller 3. forekomst af "hund" på denne liste.

Vlookup flere resultater

Følgende funktion giver os mulighed for at angive et område, et udtryk, der skal søges efter, og forekomsten (resultatnummer) og derefter returnere den tilsvarende værdi:

Funktion 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_range Hvis Cell.Value = Expression_ Occurces_Til_Chode_ Occurces_Til_Chode_Ocean_Coc_C_ Så Find_nth_Occurrence = Cell.Offset (0, 1) .Værdi Slut Hvis Afslut Hvis Næste Celle Afslutningsfunktion

Hovedforskellen mellem dette og standard VLOOKUP -funktionen er, at området i dette tilfælde er det eneste område af etiketter - ikke hele dataområdet.
Det følgende er en underrutine, der kalder denne funktion baseret på klikhændelsen fra en kommandoknap. Det ser ud i området A1: A8 på Sheet2, for 3. forekomst af ordet hund:

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

Variablen "Svar" gemmer resultatet af funktionen - som derefter vises i en Msgbox på skærmen:

> Men hvis ordet ikke kan findes på listen, eller hvis frekvensen ikke forekommer, f.eks. At der ikke er en femte forekomst af ordet "Hund", returneres værdien på 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