Indholdsfortegnelse
Vejledningen forklarer vektor- og arrayformerne af Excel LOOKUP-funktionen og demonstrerer typiske og ikke-trivielle anvendelser af LOOKUP i Excel med eksempler på formler.
Et af de hyppigste spørgsmål, som alle Excel-brugere stiller en gang imellem, er dette: " Hvordan slår jeg en værdi op på et ark op og trækker en tilsvarende værdi til et andet ark? "Der kan naturligvis være mange variationer af det grundlæggende scenario: Du kan søge efter det nærmeste match i stedet for det nøjagtige match, du kan søge lodret i en kolonne eller vandret i en række, vurdere et eller flere kriterier osv. Men essensen er den samme - du skal vide, hvordan du slår op i Excel.
Microsoft Excel tilbyder en håndfuld forskellige måder at lave opslag på. Lad os først lære en funktion, der er designet til at håndtere de enkleste tilfælde af vertikale og horisontale opslag. Som du nemt kan gætte, taler jeg om LOOKUP-funktionen.
Excel LOOKUP-funktion - syntaks og anvendelser
På det mest grundlæggende niveau søger LOOKUP-funktionen i Excel efter en værdi i en kolonne eller række og returnerer en matchende værdi fra samme position i en anden kolonne eller række.
Der er to former for LOOKUP i Excel: Vector og Array Hver formular forklares individuelt nedenfor.
Excel LOOKUP-funktion - vektorform
I denne forbindelse kan en vektor henviser til et område med én kolonne eller én række. Derfor bruger du vektorformen af LOOKUP til at søge i én række eller én kolonne af data efter en bestemt værdi og hente en værdi fra den samme position i en anden række eller kolonne.
Syntaksen for vektoropslaget er som følger:
LOOKUP(lookup_value, lookup_vector, [result_vector])Hvor:
- Opslag_værdi (påkrævet) - en værdi, der skal søges efter. Det kan være et tal, tekst, en logisk værdi på TRUE eller FALSE eller en henvisning til en celle, der indeholder opslagsværdien.
- Opslag_vektor (påkrævet) - et område på én række eller én kolonne, der skal søges i. Det skal være sorteret i stigende rækkefølge .
- Resultat_vektor (valgfrit) - et område på én række eller én kolonne, som du vil returnere resultatet fra - en værdi i samme position som opslagsværdien. Result_vektor skal være den samme størrelse som lookup_range Hvis det udelades, returneres resultatet fra lookup_vector .
De følgende eksempler viser to enkle opslagsformler i praksis.
Formel til lodret opslag - søgning i et område med én kolonne
Lad os sige, at du har en liste over sælgere i kolonne D (D2:D5) og de produkter, de har solgt, i kolonne E (E2:E5). Du er ved at oprette et dashboard, hvor dine brugere skal indtaste sælgerens navn i B2, og du har brug for en formel, der kan trække et tilsvarende produkt frem i B3. Opgaven kan nemt løses med denne formel:
=LOOKUP(B2,D2:D5,E2:E5)
For bedre at forstå argumenterne kan du se dette skærmbillede:
Vandret opslagsformel - søgning i et område med én række
Hvis dine kildedata har et horisontalt layout, dvs. at posterne er placeret i rækker i stedet for i kolonner, skal du angive et område med én række i lookup_vector og result_vector argumenter, f.eks. sådan her:
=LOOKUP(B2,E1:H1,E2:H2)
I anden del af denne vejledning vil du finde nogle flere Excel Lookup-eksempler, der løser mere komplekse opgaver. I mellemtiden skal du huske følgende enkle fakta, som vil hjælpe dig med at omgå mulige faldgruber og undgå almindelige fejl.
5 ting, du bør vide om vektorform af Excel LOOKUP
- Værdier i lookup_vector skal sorteres i stigende rækkefølge , dvs. fra den mindste til den største eller fra A til Z, ellers kan din Excel-opslagsformel returnere en fejl eller et forkert resultat. Hvis du skal lave opslag på usorterede data , og brug derefter enten INDEX MATCH eller OFFSET MATCH.
- Opslag_vektor og result_vector skal være en en række eller en kolonne område af samme størrelse.
- LOOKUP-funktionen i Excel er skift mellem store og små bogstaver , den skelner ikke mellem store og små bogstaver i tekst.
- Excel LOOKUP fungerer på grundlag af omtrentlig overensstemmelse Mere præcist søger en opslagsformel først efter nøjagtig overensstemmelse. Hvis den ikke kan finde opslagsværdien nøjagtigt, slår den op i næstmindste værdi , dvs. den største værdi i lookup_vector som er mindre end eller lig med opslagsværdi .
Hvis din opslagsværdi f.eks. er "5", vil formlen søge først efter den. Hvis "5" ikke findes, vil den søge efter "4". Hvis "4" ikke findes, vil den søge efter "3" og så videre.
- Hvis opslagsværdi er mindre end den mindste værdi i lookup_vector , Excel LOOKUP returnerer #N/A-fejlen.
Excel LOOKUP-funktion - array-form
Arrayformen af LOOKUP-funktionen søger den angivne værdi i arrayets første kolonne eller række og henter en værdi fra den samme position i arrayets sidste kolonne eller række.
Arrayet Lookup har 2 argumenter, som begge er obligatoriske:
LOOKUP(lookup_value, array)Hvor:
- Opslag_værdi - en værdi, der skal søges efter i et array.
- Array - et område af celler, hvor du vil søge efter opslagsværdien. Værdierne i den første kolonne eller række i arrayet (afhængigt af om du bruger V-lookup eller H-lookup) skal sorteres i stigende orden. Store og små bogstaver anses for at være ækvivalente.
Hvis du f.eks. har sælgers navne i den første kolonne i arrayet (kolonne A) og ordredatoer i den sidste kolonne i arrayet (kolonne C), kan du bruge følgende formel til at søge på navnet og finde den matchende dato:
= OPSLAG(B2,D2:F5)
Bemærk: Array-formen af Excel LOOKUP-funktionen skal ikke forveksles med Excel-formler med array-formler. Selv om den opererer med arrays, er LOOKUP stadig en almindelig formel, som afsluttes på den sædvanlige måde ved at trykke på Enter-tasten.
4 ting, du bør vide om array-formen af Excel LOOKUP
- Hvis array har flere rækker end kolonner eller det samme antal kolonner og rækker, søger en opslagsformel i den første kolonne (horisontalt opslag).
- Hvis array har flere kolonner end rækker , Excel LOOKUP søger i den første række (vertikalt opslag).
- Hvis en formel ikke kan finde opslagsværdien, bruger den største værdi i arrayet, der er mindre end eller lig med opslagsværdi .
- Hvis den opslagsværdien er mindre end den mindste værdi i den første kolonne eller række i arrayet (afhængigt af arrayets dimensioner), returnerer en Opslag-formel fejlen #N/A.
Vigtig bemærkning! Funktionaliteten af Excel-formularen LOOKUP-array er begrænset, og vi anbefaler ikke at bruge den. I stedet kan du bruge VLOOKUP- eller HLOOKUP-funktionen, som er de forbedrede versioner til henholdsvis vertikale og horisontale opslag.
Sådan bruger du LOOKUP-funktionen i Excel - eksempler på formler
Selv om der findes mere effektive funktioner til at slå op og matche i Excel (hvilket er emnet for vores næste tutorial), er LOOKUP praktisk i mange situationer, og de følgende eksempler viser et par ikke-trivielle anvendelser. Bemærk, at alle nedenstående formler bruger vektorformen af Excel LOOKUP.
Slå en værdi op i den sidste ikke-tomme celle i en kolonne
Hvis du har en kolonne med dynamisk udfyldte data, vil du måske vælge den senest tilføjede post, dvs. få den sidste ikke-tomme celle i en kolonne. Brug denne generiske formel til dette formål:
LOOKUP(2, 1/( kolonne ""), kolonne )I ovenstående formel er alle argumenter undtagen kolonnehenvisningen konstanter. Hvis du vil hente den sidste værdi i en bestemt kolonne, skal du blot angive den tilsvarende kolonnehenvisning. Hvis du f.eks. vil hente værdien af den sidste ikke-tomme celle i kolonne A, skal du bruge denne formel:
=LOOKUP(2, 1/(A:A""), A:A)
Hvis du vil hente den sidste værdi fra andre kolonner, skal du ændre kolonnereferencerne som vist i skærmbilledet nedenfor - den første reference er den kolonne, der skal kontrolleres for tomme/ikke-tomme celler, og den anden reference er den kolonne, som værdien skal returneres fra:
Sådan fungerer denne formel
I den opslagsværdi argumentet, skal du angive 2 eller et hvilket som helst andet tal større end 1 (om lidt vil du forstå hvorfor).
I den lookup_vector argumentet, sætter du dette udtryk: 1/(A:A""")
- Først udfører du den logiske operation A:A""", som sammenligner hver celle i kolonne A med en tom streng og returnerer TRUE for tomme celler og FALSE for ikke-tomme celler. I ovenstående eksempel returnerer formlen i F2 dette array: {TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;FALSE...}
- Derefter dividerer du tallet 1 med hvert element i ovenstående array. Med TRUE svarende til 1 og FALSE svarende til 0 får du et nyt array bestående af 1'er og #DIV/0! fejl (resultatet af at dividere med 0), og dette array bruges som lookup_vector I dette eksempel er det {1;1;1;1;1;1;1;#DIV/0!...}
Hvordan kan det nu være, at formlen returnerer den sidste ikke-tomme værdi i en kolonne, når man ved, at opslagsværdi ikke svarer til noget element i lookup_vector ? Nøglen til at forstå logikken er, at Excel LOOKUP søger med tilnærmelsesvis match, dvs. når den nøjagtige opslagsværdi ikke findes, matcher den den næststørste værdi i lookup_vector der er mindre end opslagsværdi I vores tilfælde, opslagsværdi er 2, og den største værdi i lookup_vector er 1, så LOOKUP passer til den sidste 1 i arrayet, som er den sidste ikke-tomme celle!
I den result_vector argumentet henviser du til den kolonne, som du vil returnere en værdi fra, og din Opslag-formel henter værdien i samme position som opslagsværdien.
Tip. Hvis du ønsker at få den nummeret på rækken med den sidste værdi, og brug derefter ROW-funktionen til at hente den. F.eks: =LOOKUP(2,1/(A:A""),ROW(A:A))(2,1/(A:A""),ROW(A:A))
Slå en værdi op i den sidste ikke-tomme celle i en række
Hvis dine kildedata er opdelt i rækker i stedet for kolonner, kan du få værdien af den sidste ikke-tomme celle ved hjælp af denne formel:
LOOKUP(2, 1/( række ""), række )Faktisk er denne formel ikke andet end en lille ændring af den foregående formel, med den eneste forskel, at du bruger række- i stedet for kolonnehenvisningen.
Hvis du f.eks. vil få værdien af den sidste ikke-tomme celle i række 1, skal du bruge denne formel:
=LOOKUP(2, 1/(1:1"""), 1:1)
Følgende skærmbillede viser resultatet:
Hent en værdi, der er knyttet til den sidste post i en række
Med lidt kreativitet kan ovenstående formel nemt tilpasses til at løse andre lignende opgaver. Den kan f.eks. bruges til at få en værdi, der er forbundet med den sidste forekomst af en bestemt værdi i en række. Det lyder måske lidt uklart, men det følgende eksempel gør det lettere at forstå.
Vi antager, at du har en oversigtstabel, hvor kolonne A indeholder sælgers navne, og de efterfølgende kolonner indeholder data af en eller anden art for hver måned. I dette eksempel indeholder en celle "ja", hvis en given sælger har afsluttet mindst én handel i en given måned. Vores mål er at få en måned, der er forbundet med den sidste "ja"-post i en række.
Opgaven kan løses ved at bruge følgende LOOKUP-formel:
=LOOKUP(2, 1/(B2:H2="yes"), $B$1:$H$1)
Logikken i formlen er grundlæggende den samme som i det første eksempel. Forskellen er, at du bruger operatoren "lig med" ("=") i stedet for "ikke lig med" (""") og opererer på rækker i stedet for kolonner.
Følgende skærmbillede viser et resultat:
Opslag som alternativ til indlejrede IF'er
I alle de opslagsformler, vi har diskuteret indtil nu, er der i lookup_vector og result_vector Syntaksen i Excel LOOKUP-funktionen gør det imidlertid muligt at angive vektorerne i form af en konstant i et lodret array, hvilket gør det muligt at kopiere funktionaliteten af nested IF med en mere kompakt og letlæselig formel.
Lad os sige, at du har en liste over forkortelser i kolonne A, og at du ønsker at erstatte dem med fulde navne, hvor "C" står for "Completed" (afsluttet), "D" for "Development" (udvikling) og "T" for "Testing" (test). Opgaven kan løses med følgende IF-funktion, der er indlejret i hinanden:
=IF(A2="c", "Afsluttet", IF(A2="d", "Udvikling", IF(A2="t", "Test", ""))))
Eller ved at bruge denne Opslagsformel:
=LOOKUP(A2, {"c"; "d"; "t"}, {"Afsluttet"; "Udvikling"; "Test"})
Som vist i skærmbilledet nedenfor giver begge formler identiske resultater:
Bemærk. For at en Excel-opslagsformel kan fungere korrekt, skal værdierne i opslagsbatteri skal sorteres fra A til Z eller fra den mindste til den største.
Hvis du henter værdier fra en opslagstabel, kan du indlejre en Vlookup-funktion i opslagsværdi argument for at finde et match.
Hvis vi antager, at opslagsværdien er i celle E2, at opslagstabellen er A2:C7, og at kolonnen af interesse ("Status") er den tredje kolonne i opslagstabellen, kan vi bruge følgende formel:
=LOOKUP(VLOOKUP(E2, $A$2:$C$7, 3, FALSE), {"c"; "d"; "t"}, {"Afsluttet"; "Udvikling"; "Test"})
Som vist i skærmbilledet nedenfor henter formlen projektstatus fra opslagstabellen og erstatter en forkortelse med det tilsvarende ord:
Tip. Hvis du bruger Excel 2016 som en del af et Office 365-abonnement, kan du bruge funktionen SKIFT til lignende formål.
Jeg håber, at disse eksempler har kastet lidt lys over, hvordan LOOKUP-funktionen fungerer. For bedre at forstå formlerne er du velkommen til at downloade disse Excel Lookup-eksempler. I den næste vejledning vil vi diskutere et par andre måder at lave opslag i Excel på og forklare, hvilken Lookup-formel der er bedst at bruge i hvilken situation. Jeg takker dig for at læse og håber at se dig på vores blog i næste uge!