Forbedring av VLOOKUP-funksjonen

Innhold

Hvordan pakke en fallskjerm riktig?

Fordel. Utgave 2, revidert.

La oss si at vi har følgende rekkefølgetabell:

Forbedring av VLOOKUP-funksjonen

Vi trenger for eksempel å vite hvor mye Ivanovs tredje ordre var, eller når Petrov gjennomførte sin andre avtale. Den innebygde VLOOKUP-funksjonen kan bare søke etter den første forekomsten av etternavnet i tabellen og vil ikke hjelpe oss. Spørsmål som "Hvem var leder for ordrenummer 10256?" vil også forbli ubesvart, tk. den innebygde VLOOKUP er ikke i stand til å returnere verdier fra kolonner til venstre for søket.

Begge disse problemene løses med ett slag – la oss skrive vår egen funksjon som vil se ikke bare etter den første, men i det generelle tilfellet etter den N-te forekomsten. Dessuten vil den kunne søke og produsere resultater i alle kolonner. La oss kalle det for eksempel VLOOKUP2. 

Åpne Visual Basic Editor ved å trykke ALT+F11 eller ved å velge fra menyen Tjeneste – Makro – Visual Basic Editor (Verktøy – Makro – Visual Basic Editor), sett inn en ny modul (meny Sett inn – modul) og kopier teksten til denne funksjonen dit:

Funksjon VLOOKUP2(Tabell som variant, søkkolonnenummer så lang, søkeverdi som variant, _ N så lang, resultatkolonnenummer så lang) Dim i så lang, iTell så lang Velg Sakstypenavn(Tabell) Sak "Område" For i = 1 til tabell.rader .Count If Table.Cells(i, SearchColumnNum) = SearchValue Then iCount = iCount + 1 End If If iCount = N Then VLOOKUP2 = Table.Cells(i, ResultColumnNum) Exit For End If Next i Case "Variant()" For i = 1 Å UBound(Tabell) If Table(i, SearchColumnNum) = SearchValue Then iCount = iCount + 1 If iCount = N Then VLOOKUP2 = Tabell(i, ResultColumnNum) Exit For End If Next i End Velg Avslutt funksjon  

Lukk Visual Basic Editor og gå tilbake til Excel.

Nå gjennom Sett inn – Funksjon (Sett inn — funksjon) i kategori Brukerdefinert (Brukerdefinert) du kan finne vår VLOOKUP2-funksjon og bruke den. Funksjonssyntaksen er som følger:

=VLOOKUP2(tabell; antall_kolonne_der_vi ser etter; oppslagsverdi; N; antall_kolonne_fra_til_hent_verdi)

Nå er ikke begrensningene til standardfunksjonen en hindring for oss:

Forbedring av VLOOKUP-funksjonen

PS Spesiell takk til The_Prist for å forbedre funksjonen slik at den kan søke i lukkede bøker.

  • Finne og erstatte data fra en tabell til en annen ved å bruke VLOOKUP-funksjonen
  • "Left VLOOKUP" ved hjelp av INDEX- og MATCH-funksjonene

 

Legg igjen en kommentar