Avansert VLOOKUP i Excel: multiple, double, nested

  • Dele Denne
Michael Brown

Disse eksemplene vil lære deg hvordan du Vlookup flere kriterier, returnerer en spesifikk forekomst eller alle treff, gjør dynamisk Vlookup i flere ark og mer.

Det er den andre delen av serien som vil hjelpe deg å utnytte kraften til Excel VLOOKUP. Eksemplene antyder at du vet hvordan denne funksjonen fungerer. Hvis ikke, er det grunn til å begynne med den grunnleggende bruken av VLOOKUP i Excel.

Før jeg går videre, la meg kort minne deg på syntaksen:

VLOOKUP(oppslagsverdi, tabellmatrise, kolindeksnummer, [områdeoppslag] )

Nå som alle er på samme side, la oss se nærmere på de avanserte VLOOKUP-formeleksemplene:

    Hvordan Vlookup flere kriterier

    Excel VLOOKUP-funksjonen er veldig nyttig når det gjelder å søke på tvers av en database for en bestemt verdi. Den mangler imidlertid en viktig funksjon - syntaksen tillater kun én oppslagsverdi. Men hva om du vil slå opp med flere forhold? Det er noen forskjellige løsninger du kan velge mellom.

    Formel 1. OPPSLAG med to kriterier

    Anta at du har en liste over bestillinger og ønsker å finne antallet basert på 2 kriterier, Kundenavn og Produkt . En kompliserende faktor er at hver kunde bestilte flere produkter, som vist i tabellen nedenfor:

    En vanlig VLOOKUP-formel vil ikke fungere i denne situasjonen fordi den returnerer den først funnet match basert på enregioner:

    Som i forrige eksempel starter vi med å definere noen få navn:

    • Område A2:B5 i CA-arket heter CA_Sales .
    • Rekkevidde A2:B5 i FL-ark heter FL_Sales .
    • Rekkevidde A2:B5 i KS-ark heter KS_Sales .

    Som du kan se, har alle de navngitte områdene en felles del ( Salg ) og unike deler ( CA , FL , KS ). Sørg for å navngi områdene dine på samme måte som det er viktig for formelen vi skal bygge.

    Formel 1. INDIREKTE VLOOKUP for å dynamisk hente data fra forskjellige ark

    Hvis oppgaven din er å hente data fra flere ark, er en VLOOKUP INDIRECT formel den beste løsningen – kompakt og lett å forstå.

    For dette eksemplet organiserer vi sammendragstabellen på denne måten:

    • Skriv inn produktene av interesse i A2 og A3. Dette er oppslagsverdiene våre.
    • Skriv inn de unike delene av de navngitte områdene i B1, C1 og D1.

    Og nå setter vi sammen cellen som inneholder den unike delen (B1) med fellesdelen ("_Sales"), og mate den resulterende strengen til INDIREKTE:

    INDIRECT(B$1&"_Sales")

    Den INDIREKTE-funksjonen transformerer strengen til et navn som Excel kan forstå, og du legger den inn table_array -argumentet til VLOOKUP:

    =VLOOKUP($A2, INDIRECT(B$1&"_Sales"), 2, FALSE)

    Formelen ovenfor går til B2, og deretter kopierer du den ned og til høyre.

    Vennligst vær oppmerksom på at i oppslagsverdien ($A2),vi har låst kolonnekoordinaten med absolutt cellereferanse slik at kolonnen forblir fast når formelen kopieres til høyre. I B$1-referansen låste vi raden fordi vi vil at kolonnekoordinaten skal endres og gi en passende navnedel til INDIRECT avhengig av kolonnen som formelen er kopiert til:

    Hvis hovedtabellen din er organisert annerledes, oppslagsverdiene i en rad og unike deler av områdenavnene i en kolonne, bør du låse radkoordinaten i oppslagsverdien (B$1) og kolonnekoordinaten i navnedelene ($A2):

    =VLOOKUP(B$1, INDIRECT($A2&"_Sales"), 2, FALSE)

    Formel 2. VLOOKUP og nestede IF-er for å slå opp flere ark

    I en situasjon når du har bare to eller tre oppslagsark, kan du bruke en ganske enkel VLOOKUP-formel med nestede HVIS-funksjoner for å velge riktig ark basert på nøkkelverdien i en bestemt celle:

    =VLOOKUP($A2, IF(B$1="CA", CA_Sales, IF(B$1="FL", FL_Sales, IF(B$1="KS", KS_Sales,""))), 2, FALSE)

    Hvor $A2 er oppslagsverdien (varenavn) og B$1 er nøkkelverdien (tilstand):

    I dette tilfellet trenger du ikke nødvendigvis å definere navn og kan bruke eksterne referanser for å referere til et annet ark eller arbeidsbok.

    For mer formel eksa eksempler, vennligst se Hvordan VLOOKUP på tvers av flere ark i Excel.

    Det er hvordan du bruker VLOOKUP i Excel. Jeg takker for at du leser og håper å se deg på bloggen vår neste uke!

    Øvningsarbeidsbok for nedlasting

    Avanserte VLOOKUP-formeleksempler (.xlsxfil)

    enkelt oppslagsverdi som du angir.

    For å overvinne dette kan du legge til en hjelpekolonne og sette sammen verdiene fra to oppslagskolonner ( Kunde og Produkt ) der. Det er viktig at hjelpekolonnen skal være kolonnen ytterst til venstre i tabellmatrisen fordi det er der Excel VLOOKUP alltid søker etter oppslagsverdien.

    Så, legg til en kolonne til venstre for tabell og kopier formelen nedenfor over den kolonnen. Dette vil fylle ut hjelpekolonnen med verdiene fra kolonnene B og C (mellomromstegnet settes sammen for bedre lesbarhet):

    =B2&" "&C2

    Og bruk deretter en standard VLOOKUP-formel og sted begge kriteriene i lookup_value -argumentet, atskilt med et mellomrom:

    =VLOOKUP("Jeremy Sweets", A2:D11, 4, FALSE)

    Eller skriv inn kriteriene i separate celler (G1 og G2 i vårt tilfelle) og sett sammen disse celler:

    =VLOOKUP(G1&" "&G2, A2:D11, 4, FALSE)

    Siden vi ønsker å returnere en verdi fra kolonne D, som er fjerde i tabellmatrisen, bruker vi 4 for col_index_num . Argumentet range_lookup er satt til FALSE for å Vlookup et eksakt samsvar. Skjermbildet nedenfor viser resultatet:

    Hvis oppslagstabellen din er i et annet ark , inkluderer du arkets navn i VLOOKUP-formelen. For eksempel:

    =VLOOKUP(G1&" "&G2, Orders!A2:D11, 4, FALSE)

    Alternativt kan du opprette et navngitt område for oppslagstabellen (f.eks. Ordre ) for å gjøre formelen lettere å lese:

    =VLOOKUP(G1&" "&G2, Orders, 4, FALSE)

    For mer informasjon, se HvordanVlookup fra et annet ark i Excel.

    Merk. For at formelen skal fungere riktig, bør verdiene i hjelpekolonnen settes sammen på nøyaktig samme måte som i oppslagsverdi -argumentet. For eksempel brukte vi et mellomromstegn for å skille kriteriene i både hjelpekolonnen (B2&" "&C2) og VLOOKUP-formelen (G1&" "&G2).

    Formel 2. Excel VLOOKUP med flere betingelser

    I teorien kan du bruke ovennevnte tilnærming til Vlookup mer enn to kriterier. Det er imidlertid et par forbehold. For det første er en oppslagsverdi begrenset til 255 tegn, og for det andre kan det hende at regnearkets design ikke tillater å legge til en hjelpekolonne.

    Heldigvis gir Microsoft Excel ofte mer enn én måte å gjøre det samme på. For å søke etter flere kriterier, kan du bruke enten en INDEX MATCH-kombinasjon eller XLOOKUP-funksjonen som nylig ble introdusert i Office 365.

    For eksempel, for å slå opp basert på 3 forskjellige verdier ( Dato , Kundenavn og Produkt ), bruk en av følgende formler:

    =INDEX(D2:D11, MATCH(1, (G1=A2:A11) * (G2=B2:B11) * (G3=C2:C11), 0))

    =XLOOKUP(1, (G1=A2:A11) * (G2=B2:B11) * (G3=C2:C11), D2:D11)

    Hvor:

    • G1 er kriterie 1 (dato)
    • G2 er kriterie 2 (kundenavn)
    • G3 er kriterium 3 (produkt)
    • A2:A11 er oppslag område 1 (datoer)
    • B2:B11 er oppslagsområde 2 (kundenavn)
    • C2:C11 er oppslagsområde 3 (produkter)
    • D2:D11 er returen område (mengde)

    Merk. I alle versjoner unntatt Excel 365, INDEXMATCH skal legges inn som en CSE-matriseformel ved å trykke Ctrl + Shift + Enter. I Excel 365 som støtter dynamiske matriser fungerer det også som en vanlig formel.

    For en detaljert forklaring av formlene, vennligst se:

    • XLOOKUP med flere kriterier
    • INDEX MATCH-formel med flere kriterier

    Hvordan bruk VLOOKUP for å få 2., 3. eller n. treff

    Som du allerede vet, kan Excel VLOOKUP hente bare én samsvarende verdi, mer presist, det returnerer det første treffet som ble funnet. Men hva om det er flere treff i oppslagsmatrisen din og du ønsker å få 2. eller 3. instans? Oppgaven høres ganske intrikat ut, men løsningen finnes!

    Formel 1. Vlookup Nth instans

    Anta at du har kundenavn i én kolonne, produktene de kjøpte i en annen, og du ser etter for å finne det andre eller tredje produktet kjøpt av en gitt kunde.

    Den enkleste måten er å legge til en hjelpekolonne til venstre i tabellen, slik vi gjorde i det første eksemplet. Men denne gangen vil vi fylle den med kundenavn og forekomstnummer som " John Doe1 ", " John Doe2 ", osv.

    For å finne forekomsten, bruk COUNTIF-funksjonen med en blandet områdereferanse (den første referansen er absolutt og den andre er relativ som $B$2:B2). Siden den relative referansen endres basert på posisjonen til cellen der formelen er kopiert, vil den i rad 3 bli $B$2:B3, i rad 4 -$B$2:B4, og så videre.

    Sett sammen med kundenavnet (B2), har formelen denne formen:

    =B2&COUNTIF($B$2:B2, B2)

    Formelen ovenfor går til A2 , og så kopierer du det ned til så mange celler du trenger.

    Deretter skriver du inn målnavnet og forekomstnummeret i separate celler (F1 og F2), og bruk formelen nedenfor for å søke etter en spesifikk forekomst:

    =VLOOKUP(F1&F2, A2:C11, 3, FALSE)

    Formel 2. Vlookup 2. forekomst

    Hvis du ser etter den andre forekomsten av oppslagsverdien, kan du klare seg uten hjelpekolonnen. Opprett i stedet tabellmatrisen dynamisk ved å bruke INDIREKTE-funksjonen sammen med MATCH:

    =VLOOKUP(E1, INDIRECT("A"&(MATCH(E1, A2:A11, 0)+2)&":B11"), 2, FALSE)

    Hvor:

    • E1 er oppslagsverdien
    • A2:A11 er oppslagsområdet
    • B11 er den siste (nederst til høyre) cellen i oppslagstabellen

    Vær oppmerksom på at formelen ovenfor er skrevet for et spesifikt tilfelle der dataceller i oppslagstabellen begynner i rad 2. Hvis tabellen din er et sted i midten av arket, bruker du denne universelle formelen, der A1 er cellen øverst til venstre i oppslagstabellen som inneholder en kolonneoverskrift:

    =VLOOKUP(E1, INDIRECT("A"&(MATCH(E1, A2:A11, 0)+1+ROW(A1))&":B11"), 2, FALSE)

    Hvordan denne formelen fungerer

    Her er nøkkeldelen av formelen som lager et dynamisk vlookup-område :

    INDIRECT("A"&(MATCH(E1, A2:A11, 0)+2)&":B11")

    MATCH-funksjonen konfigurert for eksakt samsvar (0 i det siste argumentet) sammenligner målnavnet (E1) med navnelisten (A2:A11) og returnerer posisjonen til det først funnet kamp, ​​som er 3i vårt tilfelle. Dette tallet skal brukes som startradkoordinaten for vlookup-området, så vi legger til 2 til det (+1 for å ekskludere den første forekomsten og +1 for å ekskludere rad 1 med kolonneoverskriftene). Alternativt kan du bruke 1+RAD(A1) for å beregne nødvendig justering automatisk basert på posisjonen til overskriftsraden (A1 i vårt tilfelle).

    Som resultat får vi følgende tekststreng, som INDIRECT konverterer til en områdereferanse:

    INDIRECT("A"&5&":B11") -> A5:B11

    Dette området går til tabellmatrise -argumentet til VLOOKUP og tvinger det til å begynne å søke i rad 5, og utelate den første forekomsten av oppslagsverdien:

    VLOOKUP(E1, A5:B11, 2, FALSE)

    Hvordan Vlookup og returnerer flere verdier i Excel

    Excel VLOOKUP-funksjonen er designet for å returnere bare ett samsvar. Er det en måte å Vlookup flere forekomster på? Ja, det er det, men det er ikke lett. Dette krever en kombinert bruk av flere funksjoner som INDEX, SMALL og ROW er en matriseformel.

    For eksempel kan nedenfor finne alle forekomster av oppslagsverdien F2 i oppslagsområdet B2:B16 og returnere multiple samsvarer fra kolonne C:

    {=IFERROR(INDEX($C$2:$C$11, SMALL(IF($F$1=$B$2:$B$11, ROW($C$2:$C$11)-1,""), ROW()-1)),"")}

    Det er 2 måter å skrive inn formelen på i regnearket:

    1. Skriv inn formelen i den første cellen, trykk Ctrl + Shift + Enter , og dra den deretter ned til noen flere celler.
    2. Velg flere tilstøtende celler i en enkelt kolonne (F1:F11 i skjermbildet nedenfor), skriv inn formelen og trykk Ctrl +Shift + Enter for å fullføre den.

    Uansett, bør antallet celler du skriver inn formelen i være lik eller større enn det maksimale antallet mulige treff.

    For en detaljert forklaring av formellogikken og flere eksempler, vennligst se Hvordan VLOOKUP flere verdier i Excel.

    Hvordan Vlookup i rader og kolonner (toveis oppslag)

    Toveis oppslag (aka matriseoppslag eller 2-dimensjonalt oppslag ) er et fancy ord for å slå opp en verdi i skjæringspunktet mellom en bestemt rad og kolonne. Det er noen forskjellige måter å gjøre todimensjonale oppslag på i Excel, men siden fokuset i denne opplæringen er på VLOOKUP-funksjonen, vil vi naturligvis bruke den.

    For dette eksemplet tar vi følgende tabell med månedlig salg og utarbeide en VLOOKUP-formel for å hente salgstallet for en spesifikk vare i en gitt måned.

    Med varenavn i A2:A9, månedsnavn i B1:F1, målvare i I1 og målmåneden i I2, går formelen som følger:

    =VLOOKUP(I1, A2:F9, MATCH(I2, A1:F1, 0), FALSE)

    Hvordan denne formelen fungerer

    Kjernen i formelen er standard VLOOKUP-funksjonen som søker etter et eksakt samsvar med oppslagsverdien i I1. Men siden vi ikke vet nøyaktig hvilken kolonne salget for en bestemt måned er, kan vi ikke oppgi kolonnenummeret direkte til col_index_num -argumentet. For å finne den kolonnen bruker vi følgende MATCHfunksjon:

    MATCH(I2, A1:F1, 0)

    Oversatt til engelsk sier formelen: slå opp I2-verdien i A1:F1 og returner dens relative posisjon i matrisen. Ved å angi 0 til det tredje argumentet, instruerer du MATCH å finne verdien som er nøyaktig lik oppslagsverdien (det er som å bruke FALSE for range_lookup -argumentet til VLOOKUP).

    Siden Mar er i den fjerde kolonnen i oppslagsmatrisen, MATCH-funksjonen returnerer 4, som går direkte til col_index_num -argumentet til VLOOKUP:

    VLOOKUP(I1, A2:F9, 4, FALSE)

    Vennligst vær oppmerksom på at selv om månedsnavnene starter i kolonne B, bruker vi A1:I1 for oppslagsmatrisen. Dette gjøres for at tallet som returneres av MATCH skal samsvare med kolonnens posisjon i tabellmatrise i VLOOKUP.

    For å lære flere måter å utføre matriseoppslag i Excel, se INDEX MATCH MATCH og andre formler for 2-dimensjonalt oppslag.

    Hvordan gjøre flere Vlookup i Excel (nested Vlookup)

    Noen ganger kan det hende at hovedtabellen og oppslagstabellen ikke har en enkelt kolonne i common, som hindrer deg i å gjøre en Vlookup mellom to tabeller. Det finnes imidlertid en annen tabell som ikke inneholder informasjonen du leter etter, men som har en felles kolonne med hovedtabellen og en annen felles kolonne med oppslagstabellen.

    I bildet nedenfor illustrerer situasjonen:

    Målet er å kopiere priser til hovedtabellen basert på Vare-ID-er . Problemet er at tabellen som inneholder priser ikke har vare-ID-ene , noe som betyr at vi må gjøre to Vlookups i én formel.

    For enkelhets skyld, la oss lage et par navngitte områder først:

    • Oppslagstabell 1 heter Produkter (D3:E10)
    • Oppslagstabell 2 heter Priser ( G3:H10 )

    Tabellene kan være i samme eller forskjellige regneark.

    Og nå skal vi utføre den såkalte doble Vlookup , aka nestet Vlookup .

    Lag først en VLOOKUP-formel for å finne produktnavnet i oppslagstabellen 1 (kalt Produkter ) basert på varen id (A3):

    =VLOOKUP(A3, Products, 2, FALSE)

    Deretter legger du formelen ovenfor i lookup_value -argumentet til en annen VLOOKUP-funksjon for å hente priser fra oppslagstabell 2 (kalt Priser ) basert på produktnavnet returnert av den nestede VLOOKUP:

    =VLOOKUP(VLOOKUP(A3, Products, 2, FALSE), Prices, 2, FALSE)

    Skjermbildet nedenfor viser vår nestede Vlookup-formel i aksjon:

    Hvordan Vlookup flere ark dynamisk

    Noen ganger, y Du kan ha data i samme format delt over flere regneark. Og målet ditt er å hente data fra et spesifikt ark avhengig av nøkkelverdien i en gitt celle.

    Dette kan være lettere å forstå fra et eksempel. La oss si at du har noen få regionale salgsrapporter i samme format, og du ønsker å få salgstallene for et spesifikt produkt i visse

    Michael Brown er en dedikert teknologientusiast med en lidenskap for å forenkle komplekse prosesser ved hjelp av programvareverktøy. Med mer enn ti års erfaring i teknologibransjen, har han forbedret ferdighetene sine i Microsoft Excel og Outlook, samt Google Sheets og Docs. Michaels blogg er dedikert til å dele sin kunnskap og ekspertise med andre, og gir enkle å følge tips og veiledninger for å forbedre produktivitet og effektivitet. Enten du er en erfaren profesjonell eller nybegynner, tilbyr Michaels blogg verdifull innsikt og praktiske råd for å få mest mulig ut av disse viktige programvareverktøyene.