Innehållsförteckning
I handledningen förklaras vektor- och matrisformerna av Excel-funktionen LOOKUP och man demonstrerar typiska och icke-triviala användningsområden för LOOKUP i Excel med hjälp av formelexempel.
En av de vanligaste frågorna som alla Excel-användare ställer då och då är följande: " Hur slår jag upp ett värde på ett ark och hämtar ett motsvarande värde till ett annat ark? "Naturligtvis kan det finnas många variationer av grundscenariot: du kanske letar efter närmaste matchning snarare än exakt matchning, du kanske vill söka vertikalt i en kolumn eller horisontellt i en rad, utvärdera ett eller flera kriterier etc. Men kärnan är densamma - du måste veta hur man söker i Excel.
Microsoft Excel erbjuder en handfull olika sätt att göra uppslag. Till att börja med ska vi lära oss en funktion som är utformad för att hantera de enklaste fallen av vertikala och horisontella uppslag. Som du säkert kan gissa talar jag om LOOKUP-funktionen.
Excel LOOKUP-funktionen - syntax och användningsområden
På den mest grundläggande nivån söker LOOKUP-funktionen i Excel efter ett värde i en kolumn eller rad och returnerar ett matchande värde från samma position i en annan kolumn eller rad.
Det finns två former av LOOKUP i Excel: Vektor och Array Varje formulär förklaras individuellt nedan.
Excel LOOKUP-funktion - vektorform
I detta sammanhang kan en vektor Du använder därför vektorformen av LOOKUP för att söka i en rad eller en kolumn av data efter ett angivet värde och hämta ett värde från samma position i en annan rad eller kolumn.
Syntaxen för vektor Lookup är följande:
LOOKUP(lookup_value, lookup_vector, [result_vector])Var:
- Lookup_value (obligatoriskt) - ett värde att söka efter. Det kan vara ett tal, text, logiskt värde TRUE eller FALSE eller en referens till en cell som innehåller uppslagsvärdet.
- Lookup_vector (obligatoriskt) - ett intervall på en rad eller en kolumn som ska sökas. Det måste vara sorterat i stigande ordning .
- Resultat_vektor (valfritt) - ett intervall på en rad eller en kolumn från vilket du vill returnera resultatet - ett värde i samma position som uppslagsvärdet. Resultat_vektor måste vara den samma storlek som lookup_range Om det inte anges, returneras resultatet från lookup_vector .
Följande exempel visar två enkla Lookup-formler i praktiken.
Vertikal Lookup-formel - sökning i ett intervall med en kolumn
Låt oss säga att du har en lista över säljare i kolumn D (D2:D5) och produkterna de sålt i kolumn E (E2:E5). Du skapar en instrumentpanel där användarna skriver in säljarens namn i B2 och du behöver en formel som tar fram en motsvarande produkt i B3. Uppgiften kan enkelt utföras med den här formeln:
=LOOKUP(B2,D2:D5,E2:E5)
För att bättre förstå argumenten kan du ta en titt på den här skärmdumpen:
Formulär för horisontell sökning - sökning i ett intervall med en rad
Om dina källdata har en horisontell layout, dvs. att posterna finns i rader snarare än i kolumner, ska du ange ett intervall på en rad i lookup_vector och result_vector argument, till exempel så här:
=LOOKUP(B2,E1:H1,E2:H2)
I den andra delen av den här handledningen hittar du några fler Excel Lookup-exempel som löser mer komplexa uppgifter. Under tiden bör du komma ihåg följande enkla fakta som hjälper dig att undvika eventuella fallgropar och förebygga vanliga fel.
5 saker du bör veta om vektorformen av Excel LOOKUP
- Värden i lookup_vector bör sorteras i stigande ordning , dvs. från minsta till största eller från A till Z, annars kan din Excel Lookup-formel ge ett fel eller felaktigt resultat. Om du behöver göra en lookup på osorterade uppgifter och använd sedan antingen INDEX MATCH eller OFFSET MATCH.
- Lookup_vector och result_vector måste vara en Enradig eller . en kolumn intervall av samma storlek.
- LOOKUP-funktionen i Excel är Skiftlägeskänslig Den skiljer inte mellan stora och små bokstäver.
- Excel LOOKUP fungerar baserat på ungefärlig matchning En Lookup-formel söker först efter exakt matchning. Om den inte kan hitta exakt samma värde som Lookup-värdet, söker den upp nästa minsta värde , dvs. det största värdet i lookup_vector som är mindre än eller lika med Lookup_value .
Om ditt uppslagsvärde t.ex. är "5" kommer formeln att söka efter det först. Om "5" inte hittas kommer den att söka efter "4". Om "4" inte hittas kommer den att söka efter "3", och så vidare.
- Om Lookup_value är mindre än det minsta värdet i lookup_vector , Excel LOOKUP returnerar felet #N/A.
Excel LOOKUP-funktionen - arrayform
I arrayformen av LOOKUP-funktionen söks det angivna värdet i arrayens första kolumn eller rad och ett värde hämtas från samma position i arrayens sista kolumn eller rad.
Arrayn Lookup har två argument, som båda är obligatoriska:
LOOKUP(lookup_value, array)Var:
- Lookup_value - ett värde att söka efter i en array.
- Array - ett intervall av celler där du vill söka efter uppslagsvärdet. Värdena i den första kolumnen eller raden i matrisen (beroende på om du använder V-lookup eller H-lookup) måste vara sorterade i stigande ordning. Bokstäver och gemener anses vara likvärdiga.
Om du till exempel har säljarnas namn i den första kolumnen i matrisen (kolumn A) och beställningsdatum i den sista kolumnen i matrisen (kolumn C) kan du använda följande formel för att söka efter namnet och ta fram det matchande datumet:
=LOOKUP(B2,D2:F5)
Observera: Arraysformen av Excel-funktionen LOOKUP ska inte förväxlas med Excel-formler för arrays. Även om den arbetar med arrays är LOOKUP fortfarande en vanlig formel, som avslutas på vanligt sätt genom att trycka på Enter-tangenten.
4 saker du bör veta om array-formen av Excel LOOKUP
- Om matris har fler rader än kolumner eller samma antal kolumner och rader, söker en formel Lookup i den första kolumnen (horisontell lookup).
- Om matris har fler kolumner än rader Excel LOOKUP söker i den första raden (vertikal sökning).
- Om en formel inte kan hitta ett uppslagsvärde använder den största värde i matrisen som är mindre än eller lika med Lookup_value .
- Om den Uppslagsvärdet är mindre. än det minsta värdet i den första kolumnen eller raden i matrisen (beroende på matrisens dimensioner), returnerar en Lookup-formel felet #N/A.
Viktig notering! Funktionerna i Excel-formuläret LOOKUP array är begränsade och vi rekommenderar inte att du använder det. I stället kan du använda VLOOKUP- eller HLOOKUP-funktionen, som är de förbättrade versionerna för vertikal respektive horisontell sökning.
Hur man använder LOOKUP-funktionen i Excel - exempel på formler
Även om det finns mer kraftfulla funktioner för att söka upp och matcha i Excel (vilket är ämnet för vår nästa handledning), är LOOKUP praktiskt i många situationer, och följande exempel visar ett par icke-triviala användningsområden. Observera att alla nedanstående formler använder vektorformen av Excel LOOKUP.
Slå upp ett värde i den sista icke-tomma cellen i en kolumn
Om du har en kolumn med dynamiskt fyllda data kanske du vill välja den senast tillagda posten, dvs. ta fram den sista icke-tomma cellen i en kolumn. Använd den här generiska formeln för detta:
LOOKUP(2, 1/( kolumn ""), kolumn )I formeln ovan är alla argument utom kolumnreferensen konstanter. Om du vill hämta det sista värdet i en viss kolumn behöver du bara ange motsvarande kolumnreferens. Om du till exempel vill hämta värdet för den sista icke-tomma cellen i kolumn A använder du den här formeln:
=LOOKUP(2, 1/(A:A""), A:A)
Om du vill hämta det senaste värdet från andra kolumner ändrar du kolumnreferenserna på det sätt som visas i skärmbilden nedan - den första referensen är den kolumn som ska kontrolleras för tomma/icke-tomma celler och den andra referensen är den kolumn som värdet ska returneras från:
Hur denna formel fungerar
I Lookup_value argumentet anger du 2 eller något annat tal som är större än 1 (om en stund kommer du att förstå varför).
I lookup_vector argumentet, du sätter detta uttryck: 1/(A:A""")
- Först utför du den logiska operationen A:A""" som jämför varje cell i kolumn A med en tom sträng och returnerar TRUE för tomma celler och FALSE för icke-tomma celler. I exemplet ovan returnerar formeln i F2 denna matris: {TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;FALSE...}
- Sedan delar du talet 1 med varje element i ovanstående matris. Med TRUE lika med 1 och FALSE lika med 0 får du en ny matris som består av 1:or och #DIV/0! fel (resultatet av att dividera med 0), och denna matris används som lookup_vector I det här exemplet är det {1;1;1;1;1;1;#DIV/0!...}
Hur kommer det sig att formeln returnerar det sista icke-tomma värdet i en kolumn, med tanke på att Lookup_value inte matchar något element i lookup_vector Nyckeln till att förstå logiken är att Excel LOOKUP söker med approximativ matchning, dvs. när det exakta värdet inte hittas, matchar den det näst största värdet i lookup_vector som är mindre än Lookup_value I vårt fall, Lookup_value är 2 och det största värdet i lookup_vector är 1, så LOOKUP matchar den sista 1:an i matrisen, vilket är den sista icke-tomma cellen!
I result_vector argumentet hänvisar du till den kolumn som du vill returnera ett värde från, och din Lookup-formel hämtar värdet i samma position som lookup-värdet.
Tips. Om du vill få den radens nummer som håller kvar det sista värdet och använder sedan ROW-funktionen för att hämta det. Till exempel: =LOOKUP(2,1/(A:A""),ROW(A:A))
Slå upp ett värde i den sista icke-tomma cellen i en rad
Om dina källdata är uppställda i rader istället för kolumner kan du få fram värdet på den sista icke-tomma cellen med den här formeln:
LOOKUP(2, 1/( rad ""), rad )Den här formeln är i själva verket inget annat än en liten modifiering av den tidigare formeln, med den enda skillnaden att du använder radreferensen i stället för kolumnreferensen.
Om du till exempel vill få fram värdet på den sista icke-tomma cellen i rad 1 använder du den här formeln:
=LOOKUP(2, 1/(1:1""), 1:1)
Följande skärmdump visar resultatet:
Hämta ett värde som är kopplat till den sista posten i en rad.
Med lite kreativitet kan formeln ovan enkelt anpassas för att lösa andra liknande uppgifter. Den kan till exempel användas för att få fram ett värde som är kopplat till den sista förekomsten av ett visst värde i en rad. Detta kan låta lite oklart, men följande exempel gör det lättare att förstå.
Antag att du har en sammanfattningstabell där kolumn A innehåller säljarnas namn och där efterföljande kolumner innehåller data av något slag för varje månad. I det här exemplet innehåller en cell "ja" om en viss säljare har avslutat minst en affär under en viss månad. Vårt mål är att få fram en månad som är kopplad till den sista "ja"-uppgiften i en rad.
Uppgiften kan lösas med hjälp av följande LOOKUP-formel:
=LOOKUP(2, 1/(B2:H2="yes"), $B$1:$H$1)
Formelns logik är i princip densamma som i det första exemplet. Skillnaden är att du använder operatorn "lika med" ("=") i stället för "inte lika med" ("") och att du arbetar på rader i stället för kolumner.
Följande skärmdump visar ett resultat:
Lookup som alternativ till inbäddade IF:er
I alla de Lookup-formler som vi har diskuterat hittills har lookup_vector och result_vector Syntaxen för Excel-funktionen LOOKUP gör det dock möjligt att leverera vektorerna i form av en vertikal arraykonstant, vilket gör det möjligt att replikera funktionaliteten hos nested IF med en mer kompakt och lättläst formel.
Låt oss säga att du har en lista med förkortningar i kolumn A och att du vill ersätta dem med fullständiga namn, där "C" står för "Completed" (slutförd), "D" för "Development" (utveckling) och "T" för "Testing" (testning). Uppgiften kan utföras med följande inbäddade IF-funktion:
=IF(A2="c", "Avslutat", IF(A2="d", "Utveckling", IF(A2="t", "Testning", "")))
Eller genom att använda denna formel för Lookup:
=LOOKUP(A2, {"c"; "d"; "t"}, {"Completed"; "Development"; "Testing"})
Som framgår av skärmdumpen nedan ger båda formlerna samma resultat:
Observera: För att en Excel Lookup-formel ska fungera korrekt måste värdena i Lookup_array De bör sorteras från A till Z eller från minsta till största.
Om du hämtar värden från en uppslagstabell kan du bädda in en Vlookup-funktion i Lookup_value argumentet för att hitta en matchning.
Om vi antar att uppslagsvärdet finns i cell E2, att uppslagstabellen är A2:C7 och att den intressanta kolumnen ("Status") är den tredje kolumnen i uppslagstabellen, kan du använda följande formel:
=LOOKUP(VLOOKUP(E2, $A$2:$C$7, 3, FALSE), {"c"; "d"; "t"}, {"Completed"; "Development"; "Testing"})
Som visas i skärmdumpen nedan hämtar formeln projektstatusen från uppslagstabellen och ersätter en förkortning med motsvarande ord:
Tips: Om du använder Excel 2016 som en del av en Office 365-prenumeration kan du använda funktionen SWITCH för liknande ändamål.
Jag hoppas att dessa exempel har kastat lite ljus över hur LOOKUP-funktionen fungerar. För att bättre förstå formlerna är du välkommen att ladda ner dessa Excel Lookup-exempel. I nästa handledning kommer vi att diskutera några andra sätt att göra Lookup i Excel och förklara vilken Lookup-formel som är bäst att använda i vilken situation. Jag tackar dig för att du läste och hoppas att vi ses på vår blogg nästa vecka!