Avanceret VLOOKUP i Excel: flere, dobbelte, indlejrede

  • Del Dette
Michael Brown

Disse eksempler viser dig, hvordan du kan lave Vlookup på flere kriterier, returnere en bestemt forekomst eller alle kampe, lave dynamisk Vlookup i flere ark og meget mere.

Det er anden del af serien, som hjælper dig med at udnytte styrken i Excel VLOOKUP. Eksemplerne forudsætter, at du ved, hvordan denne funktion fungerer. Hvis ikke, er det oplagt at starte med de grundlæggende anvendelser af VLOOKUP i Excel.

Før vi går videre, vil jeg kort minde dig om syntaksen:

VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])

Nu hvor alle er enige, kan vi se nærmere på de avancerede eksempler på VLOOKUP-formler:

    Sådan Vlookup flere kriterier

    Excel VLOOKUP-funktionen er virkelig nyttig, når du skal søge i en database efter en bestemt værdi. Den mangler dog en vigtig funktion - dens syntaks tillader kun én opslagsværdi. Men hvad nu, hvis du vil slå op med flere betingelser? Der er et par forskellige løsninger, som du kan vælge imellem.

    Formel 1. VLOOKUP med to kriterier

    Antag, at du har en liste over ordrer og ønsker at finde mængden baseret på 2 kriterier, Kundens navn og Produkt En komplicerende faktor er, at hver kunde bestilte flere produkter, som det fremgår af nedenstående tabel:

    En sædvanlig VLOOKUP-formel fungerer ikke i denne situation, fordi den returnerer det første fundne match baseret på en enkelt opslagsværdi, som du angiver.

    For at løse dette problem kan du tilføje en hjælpekolonne og sammenkæde værdierne fra to opslagskolonner ( Kunde og Produkt ) der. Det er vigtigt, at hjælpekolonnen skal være den længst til venstre kolonnen i tabelmatrixen, fordi det er der, Excel VLOOKUP altid søger efter opslagsværdien.

    Tilføj en kolonne til venstre for din tabel og kopier nedenstående formel hen over denne kolonne. Dette vil udfylde hjælpekolonnen med værdierne fra kolonne B og C (mellemrumstegnet er sammenkædet mellem dem for at gøre det lettere at læse):

    =B2&" "&C2

    Brug derefter en standard VLOOKUP-formel og placer begge kriterier i opslagsværdi argument, adskilt med et mellemrum:

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

    Eller du kan indtaste kriterierne i separate celler (G1 og G2 i vores tilfælde) og sammenkæde disse celler:

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

    Da vi ønsker at returnere en værdi fra kolonne D, som er fjerde kolonne i tabellen, bruger vi 4 for col_index_num . range_lookup argumentet er sat til FALSE for at få et nøjagtigt match i Vlookup. Skærmbilledet nedenfor viser resultatet:

    Hvis dit opslagsskema er i et andet ark , medtag arkets navn i din VLOOKUP-formel, f.eks:

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

    Alternativt kan du oprette et navngivet område for opslagstabellen (f.eks, Ordrer ) for at gøre formlen lettere at læse:

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

    Du kan finde flere oplysninger under Sådan laver du et Vlookup fra et andet ark i Excel.

    Bemærk. For at formlen skal fungere korrekt, skal værdierne i hjælpekolonnen sammenkædes på nøjagtig samme måde som i opslagsværdi Vi har f.eks. brugt et mellemrum til at adskille kriterierne i både hjælpekolonnen (B2&" "&C2) og VLOOKUP-formlen (G1&" "&G2).

    Formel 2. Excel VLOOKUP med flere betingelser

    I teorien kan du bruge ovenstående fremgangsmåde til at foretage et Vlookup på mere end to kriterier. Der er dog et par forbehold. For det første er en opslagsværdi begrænset til 255 tegn, og for det andet er det muligvis ikke muligt at tilføje en hjælpekolonne i regnearkets design.

    Heldigvis tilbyder Microsoft Excel ofte mere end én måde at gøre det samme på. Hvis du vil lave et Vlookup på flere kriterier, kan du bruge enten en INDEX MATCH-kombination eller XLOOKUP-funktionen, der for nylig blev introduceret i Office 365.

    Hvis du f.eks. vil slå op baseret på 3 forskellige værdier ( Dato , Kundens navn og Produkt ), skal du bruge en af 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 kriterium 1 (dato)
    • G2 er kriterium 2 (kundens navn)
    • G3 er kriterium 3 (produkt)
    • A2:A11 er opslagsinterval 1 (datoer)
    • B2:B11 er opslagsinterval 2 (kundenavne)
    • C2:C11 er opslagsinterval 3 (produkter)
    • D2:D11 er returområdet (mængde)

    Bemærk: I alle versioner undtagen Excel 365 skal INDEX MATCH indtastes som en CSE-arrayformel ved at trykke på Ctrl + Shift + Enter. I Excel 365, der understøtter dynamiske arrays, fungerer det også som en almindelig formel.

    For en detaljeret forklaring af formlerne henvises til:

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

    Sådan bruger du VLOOKUP til at få 2., 3. eller niende match

    Som du allerede ved, kan Excel VLOOKUP kun hente én matchende værdi, nærmere bestemt returnerer den den første match, der er fundet. Men hvad nu hvis der er flere matches i dit opslagsarray, og du ønsker at hente den 2. eller 3. instans? Opgaven lyder ret indviklet, men løsningen findes!

    Formel 1. Vlookup Nth instance

    Antag, at du har kunders navne i en kolonne, de produkter, de har købt, i en anden kolonne, og at du søger efter det andet eller tredje produkt, som en given kunde har købt.

    Den enkleste måde er at tilføje en hjælpekolonne til venstre for tabellen, som vi gjorde i det første eksempel. Men denne gang vil vi udfylde den med kundenavne og forekomstnumre som " John Doe1 ", " John Doe2 " osv.

    For at få fremkomsten skal du bruge funktionen COUNTIF med en blandet intervalreference (den første reference er absolut og den anden er relativ som $B$2:B2). Da den relative reference ændres baseret på positionen af den celle, hvor formlen kopieres, vil den i række 3 blive $B$2:B3, i række 4 - $B$2:B4 osv.

    Sammenkædet med kundenavnet (B2) får formlen denne form:

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

    Ovenstående formel indsættes i A2, og derefter kopierer du den ned til så mange celler som nødvendigt.

    Indtast derefter målnavnet og forekomstnummeret i separate celler (F1 og F2), og brug nedenstående formel til at foretage et Vlookup på en bestemt forekomst:

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

    Formel 2. Vlookup 2. forekomst

    Hvis du leder efter den anden forekomst af opslagsværdien, kan du undvære hjælpekolonnen. I stedet skal du oprette tabelarrayet dynamisk ved at bruge INDIRECT-funktionen sammen med MATCH:

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

    Hvor:

    • E1 er opslagsværdien
    • A2:A11 er opslagsintervallet
    • B11 er den sidste celle (nederst til højre) i opslagstabellen

    Bemærk, at ovenstående formel er skrevet til et specifikt tilfælde, hvor datacellerne i opslagstabellen begynder i række 2. Hvis din tabel ligger et sted midt i arket, skal du bruge denne universelle formel, hvor A1 er den øverste venstre celle i opslagstabellen, der indeholder en kolonneoverskrift:

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

    Sådan fungerer denne formel

    Her er den vigtigste del af formlen, der skaber en dynamisk vlookup-område :

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

    MATCH-funktionen, der er konfigureret til nøjagtig match (0 i det sidste argument), sammenligner målnavnet (E1) med listen over navne (A2:A11) og returnerer positionen for det første fundne match, som i vores tilfælde er 3. Dette tal skal bruges som startrækkekoordinat for vlookup-området, så vi tilføjer 2 til det (+1 for at udelukke den første forekomst og +1 for at udelukke række 1 med kolonneoverskrifterne).Alternativt kan du bruge 1+ROW(A1) til at beregne den nødvendige justering automatisk baseret på positionen af overskriftsrækken (A1 i vores tilfælde).

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

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

    Denne rækkevidde går til table_array argumentet i VLOOKUP, hvilket tvinger den til at begynde at søge i række 5 og udelader den første forekomst af opslagsværdien:

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

    Sådan Vlookup og returnerer flere værdier i Excel

    Excel VLOOKUP-funktionen er designet til kun at returnere ét match. Er der en måde at lave Vlookup på i flere tilfælde? Ja, det er der, men det er ikke let. Det kræver kombineret brug af flere funktioner som INDEX, SMALL og ROW er en array-formel.

    Nedenstående kan f.eks. finde alle forekomster af opslagsværdien F2 i opslagsintervallet B2:B16 og returnere flere match 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)),""),"")}

    Der er 2 måder at indtaste formlen i regnearket på:

    1. Skriv formlen i den første celle, tryk på Ctrl + Shift + Enter , og træk den derefter ned til et par celler mere.
    2. Vælg flere tilstødende celler i en enkelt kolonne (F1:F11 i skærmbilledet nedenfor), skriv formlen, og tryk på Ctrl + Shift + Enter for at fuldføre den.

    Uanset hvad, skal antallet af celler, hvor du indtaster formlen, være lig med eller større end det maksimale antal mulige match.

    Du kan finde en detaljeret forklaring på formellogikken og flere eksempler i Hvordan man VLOOKUP flere værdier i Excel.

    Sådan Vlookup i rækker og kolonner (tovejsopslag)

    Tovejsopslag (også kendt som matrixopslag eller 2-dimentionelt opslag ) er et fancy ord for at finde en værdi i krydset mellem en bestemt række og kolonne. Der er et par forskellige måder at lave todimensionale opslag i Excel på, men da fokus i denne vejledning er på VLOOKUP-funktionen, vil vi naturligvis bruge den.

    I dette eksempel tager vi nedenstående tabel med månedlige salgstal og udarbejder en VLOOKUP-formel til at hente salgstallet for en bestemt vare i en given måned.

    Med artikelnavne i A2:A9, månedsnavne i B1:F1, målartiklen i I1 og målmåneden i I2 lyder formlen således:

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

    Sådan fungerer denne formel

    Kernen i formlen er standard VLOOKUP-funktionen, der søger efter et nøjagtigt match til opslagsværdien i I1. Men da vi ikke ved, i hvilken kolonne salget for en bestemt måned er, kan vi ikke angive kolonnenummeret direkte til col_index_num For at finde denne kolonne bruger vi følgende MATCH-funktion:

    MATCH(I2, A1:F1, 0)

    Oversat til dansk siger formlen: Slå I2-værdien op i A1:F1 og returner dens relative position i arrayet. Ved at angive 0 til det tredje argument instruerer du MATCH om at finde den værdi, der er nøjagtig lig med opslagsværdien (det svarer til at bruge FALSE for range_lookup argumentet i VLOOKUP).

    Siden Mar er i den fjerde kolonne i opslagsarrayet, returnerer MATCH-funktionen 4, som går direkte til col_index_num argumentet i VLOOKUP:

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

    Vær opmærksom på, at selv om månedsnavnene starter i kolonne B, bruger vi A1:I1 til opslagsarrayet. Dette gøres for at det nummer, der returneres af MATCH, skal svare til kolonnens position i table_array af VLOOKUP.

    Du kan lære flere måder at udføre matrixopslag i Excel på ved at se INDEX MATCH MATCH MATCH og andre formler til 2-dimensionale opslag.

    Sådan laver du flere Vlookup i Excel (indlejret Vlookup)

    Nogle gange kan det ske, at hovedtabellen og opslagstabellen ikke har en enkelt kolonne til fælles, hvilket forhindrer dig i at lave et Vlookup mellem to tabeller. Der findes imidlertid en anden tabel, som ikke indeholder de oplysninger, du leder efter, men som har en kolonne til fælles med hovedtabellen og en anden kolonne til fælles med opslagstabellen.

    Nedenstående billede illustrerer situationen:

    Målet er at kopiere priserne til hovedtabellen på grundlag af Artikel-ID'er Problemet er, at tabellen med priserne ikke har den Artikel-id'er , hvilket betyder, at vi skal lave to Vlookups i én formel.

    Lad os for nemheds skyld først oprette et par navngivne intervaller:

    • Opslagstabel 1 hedder Produkter (D3:E10)
    • Opslagstabel 2 hedder Priser ( G3:H10 )

    Tabellerne kan være i det samme eller i forskellige regneark.

    Og nu vil vi udføre den såkaldte dobbelt Vlookup , også kendt som indlejret Vlookup .

    Først skal du lave en VLOOKUP-formel for at finde produktnavnet i opslagsskema 1 (kaldet Produkter ) på grundlag af varenummeret (A3):

    =VLOOKUP(A3, Produkter, 2, FALSK)

    Indsæt derefter ovenstående formel i opslagsværdi argument i en anden VLOOKUP-funktion for at trække priser fra opslagstabel 2 (kaldet Priser ) baseret på produktnavnet, der er returneret af den indlejrede VLOOKUP:

    =VLOOKUP(VLOOKUP(A3, Produkter, 2, FALSK), Priser, 2, FALSK)

    Skærmbilledet nedenfor viser vores indlejrede Vlookup-formel i aktion:

    Sådan Vlookup flere ark dynamisk

    Nogle gange kan du have data i samme format fordelt på flere regneark, og dit mål er at hente data fra et bestemt ark afhængigt af nøgleværdien i en given celle.

    Det er måske lettere at forstå ud fra et eksempel: Lad os sige, at du har et par regionale salgsrapporter i samme format, og at du ønsker at få salgstallene for et bestemt produkt i bestemte regioner:

    Ligesom i det foregående eksempel starter vi med at definere nogle få navne:

    • Område A2:B5 i CA-ark er navngivet CA_Salg .
    • Område A2:B5 i FL-ark er navngivet FL_Salg .
    • Område A2:B5 i KS-arket er navngivet KS_Salg .

    Som du kan se, har alle de navngivne intervaller en fælles del ( Salg ) og unikke dele ( CA , FL , KS ). Sørg for at navngive dine intervaller på samme måde, da det er vigtigt for den formel, vi skal opbygge.

    Formel 1. INDIRECT VLOOKUP til dynamisk at trække data fra forskellige ark

    Hvis din opgave er at hente data fra flere ark, er en VLOOKUP INDIRECT-formel den bedste løsning - kompakt og let forståelig.

    I dette eksempel organiserer vi oversigtstabellen på denne måde:

    • Indtast de relevante produkter i A2 og A3. Det er vores opslagsværdier.
    • Indtast de unikke dele af de navngivne intervaller i B1, C1 og D1.

    Og nu sammenkæder vi cellen med den unikke del (B1) med den fælles del ("_Sales") og sender den resulterende streng til INDIRECT:

    INDIRECT(B$1&"_Salg")

    INDIRECT-funktionen omdanner strengen til et navn, som Excel kan forstå, og du sætter det ind i table_array argumentet i VLOOKUP:

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

    Ovenstående formel går til B2, og derefter kopierer du den nedad og til højre.

    Vær opmærksom på, at vi i opslagsværdien ($A2) har låst kolonnekoordinaten med absolut cellehenvisning, så kolonnen forbliver fast, når formlen kopieres til højre. I B$1-referencen har vi låst rækken, fordi vi ønsker, at kolonnekoordinaten skal ændres og levere en passende navnedel til INDIRECT afhængigt af den kolonne, som formlen kopieres til:

    Hvis din hovedtabel er organiseret anderledes, med opslagsværdierne i en række og unikke dele af intervalnavnene i en kolonne, skal du låse rækkekoordinaten i opslagsværdien (B$1) og kolonnekoordinaten i navnedelene ($A2):

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

    Formel 2. VLOOKUP og indlejrede IF'er til at søge i flere ark

    I situationer, hvor du kun har to eller tre opslagsark, kan du bruge en ret simpel VLOOKUP-formel med indlejrede IF-funktioner til at vælge det korrekte ark baseret på nøgleværdien 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 opslagsværdien (emnebetegnelse) og B$1 er nøgleværdien (tilstand):

    I dette tilfælde behøver du ikke nødvendigvis at definere navne, og du kan bruge eksterne referencer til at henvise til et andet ark eller en anden projektmappe.

    Du kan finde flere eksempler på formler i Hvordan man laver VLOOKUP på tværs af flere ark i Excel.

    Sådan bruger du VLOOKUP i Excel. Jeg takker for din læsning og håber at se dig på vores blog i næste uge!

    Arbejdsbog til download

    Avancerede eksempler på VLOOKUP-formler (.xlsx-fil)

    Michael Brown er en dedikeret teknologientusiast med en passion for at forenkle komplekse processer ved hjælp af softwareværktøjer. Med mere end ti års erfaring i teknologibranchen har han finpudset sine færdigheder i Microsoft Excel og Outlook samt Google Sheets og Docs. Michaels blog er dedikeret til at dele sin viden og ekspertise med andre og giver nemme at følge tips og vejledninger til at forbedre produktiviteten og effektiviteten. Uanset om du er en erfaren professionel eller nybegynder, tilbyder Michaels blog værdifuld indsigt og praktiske råd til at få mest muligt ud af disse vigtige softwareværktøjer.