Vad är skillnaden på LETAUPP(LOOKUP), LETARAD(VLOOKUP) och XLETAUPP(XLOOKUP)
Det som är gemensamt för de tre funktionerna är att de alla är till för att leta och söka värden och referenser. Lite förenklat kan man säga att XLETAUPP() är en förbättring av LETARAD(), som i sin tur är en förbättring av LETAUPP(). Jag kommer i det här inlägget att bryta ned funktionerna för att mer tydliggöra vad som skiljer dem åt och när de kan komma till användning. För att inte krångla till det har jag valt att mer eller mindre bara visa funktionernas standardbeteenden. Funktionerna kommer alltså visas i sin renaste form, förutom ett eller två undantag.
För dem som vill använda sig av samma simpla datamängd, så bifogas filen också med funktionerna redan ifyllda. Däremot uppmuntras det att testa med andra datamängder också, gärna större. Dessa funktioner vars argument inte är speciellt svåra att förstå, kan det ändå krävas en del övning. Simpelheten i främst LETAUPP() och LETARAD() är även vad som kan försvåra saker och ting med funktionerna, vilket kommer granskas närmare.
Övergripande om funktionerna
LETAUPP() – utför en ungefärlig matchning i ett intervall med en kolumn eller rad, och returnerar motsvarande värde från ett annat rad-/kolumnintervall.
LETARAD() – är en funktion för att slå upp data i en vertikalt organiserad tabell. Funktionen kan användas för ungefärlig, exakt och partiell matchning. De värden som eftersöks måste visas i den första kolumnen i tabellen.
XLETAUPP() – är en flexibel ersättning för just LETAUPP(), LETARAD() men även LETAKOLUMN() och kombinationen INDEX() / PASSA(). XLETAUPP() kan användas för ungefärlig, exakt och partiella matchningar, för uppslagningar i vertikala eller horisontella intervall.
Hur används LETAUPP?
LETAUPP() används för att leta i en enda rad eller kolumn, och hitta ett värde från samma position i en annan rad eller kolumn. LETAUPP() har användbara standardbeteenden när du löser vissa problem. LETAUPP() kan t ex användas för att hämta ett ungefärligt matchat värde istället för en position, eller för att hitta det sista värdet i en rad eller kolumn.
Exempel 1
I exemplet nedan, ser du hur det går att söka med hjälp av en anställds namn och få reda på vilken kurs hen läser.
=LETAUPP(G3;B:B;C:C)
Funktionen slår upp värdet som finns cell G3; jämför värdet i G3 med värdena i kolumn B; och returnerar det motsvarande värde i kolumn C som finns på samma rad.
LETAUPP()-funktionen accepterar tre argument, dvs att alla argument i exemplet ovan utnyttjas, om vi bortser från det fjärde valfria argumentet. Det gör att funktionen kastas om något, varför jag inte kommer gå in ytterligare på det.
Det kan också sägas att LETAUPP() kan användas för tabeller och matriser också. Detta rekommenderas dock inte. Det ska också sägas att vi bör arbeta med värden som är sorterade i fallande ordning då funktionen annars kan returnera fel värde. Tänk även på att vektorerna måste ha samma längd för andra och tredje argumentet.
För att sammanfatta kan man säga att funktionens svaghet är att den är begränsad till ungefärliga matchningar. Dess styrka är däremot att den är multifunktionell och kan röra sig hur som helst. Det är faktiskt något som begränsar den annars mer funktionella LETARAD().
Hur används LETARAD?
LETARAD() används när vi ska hitta värden i en tabell eller matris för radintervall. LETARAD() är förmodligen en av de mest kända Excelfunktionerna, även om den nu har blivit trumfad av den mer uppfräschade XLETAUPP(). Likväl används den fortfarande i hög utsträckning, på gott och ont. En positiv egenskap är att den är lätt att använda, men liksom övriga Excelfunktioner kan den användas på många olika sätt. Ganska snart kommer någon som har bekantat sig med funktionen att vilja hämta flera värden på samma gång, eller fylla på med fler kriterier. Då kommer man snart också inse dess begränsningar om man jämför med XLETAUPP() eller INDEX / PASSA. LETARAD() behöver en komplett tabell med uppslagsvärden i den första kolumnen. Detta ställer till det när man vill använda funktionen för flera kriterier. Precis som med LETAUPP() kan LETARAD()s standardmatchning göra att vi får fel värde. Detta är varför det krävs övning, enkelheten till trots. Vill man använda funktionen effektivt behöver man bemästra grunderna.
Exempel 2
Kollar vi exemplet nedan så inser vi att vi kan få samma resultat som med LETAUPP(), även om vi här söker ett namn och får ett anställningsnummer i retur.
=LETARAD(G3;A2:D21;2;FALSKT)
Funktionen fungerar så här: vad vi vill slå upp; var ska funktionen leta efter det; kolumnnumret för värdet som ska returneras; och huruvida vi vill ha en ungefärlig eller exakt matchning.
Jämför vi tabellerna för de båda exemplen, ser vi att anställningsnummer och namn har bytt plats. Hur kommer det sig? Jo, för att LETARAD()-funktionen inte kan hämta värden till vänster om en kolumn, funktionen fungerar alltså bara till höger. Trots att LETARAD() är en uppdatering av LETAUPP(), finns det alltså tillfällen då LETAUPP() lämpar sig bättre. LETARAD() är fortfarande mer dynamisk då den bättre kan hantera tabeller och matriser, samt att vi har valet att göra antingen en exakt eller ungefärlig matchning. Vi behöver inte heller oroa oss för huruvida våra värden är sorterade eller inte, i alla fall inte vid exakta matchningar. I exemplet för LETARAD() utförde funktionen en exakt matchning, men tänk om den exakta matchningen inte ger något resultat? Vi hade kunnat kapsla in funktionen i en OM()-funktion, och satt villkor för vad som ska returneras beroende på utfall. Detta har XLETAUPP() en inbyggd lösning för.
Hur används XLETAUPP?
XLETAUPP() används för att hitta värden i en tabell, eller rad för rad. Funktionen letar efter en sökterm och returnerar ett resultat från samma rad i en annan kolumn. Här begränsas vi inte på samma sätt som med LETARAD()-funktionen, utan kan röra oss fritt. XLETAUPP() är en flexibel och mångsidig funktion som kan användas i en mängd olika situationer.
Vi kan välja på att hitta en exakt matchning, ungefärlig eller partiell. Partiella matchningar använder så kallade jokertecken i form av en eller flera asterisker. Saknas det en exakt matchning kan vi alltså få en ungefärlig, eller så kan vi välja att funktionen ska returnera något annat, t ex ett felmeddelande. Precis som vissa andra funktioner i Excel, kan XLETAUPP() returnera ”#NA” om inget värde hittas. Alternativt, och till skillnad från många andra funktioner, har XLETAUPP() ett valfritt argument som kan användas för att tackla dessa problem. Genom att användaren helt enkelt matar in ett värde eller en sträng som ska visas istället, t ex ”värdet kan inte hittas”, ”inget resultat” etc.
Exempel 3
Vad som kanske är mest användbart är att funktionen kan returnera flera värden, vilket vi kan se i exemplet nedan.
=TRANSPONERA(XLETAUPP(G3;B:B;C:D))
Värdet vi söker efter; matrisen eller intervallet där värdet ska sökas; och matrisen eller intervallet varifrån värdena ska returneras ifrån.
Här används också funktionen TRANSPONERA() för att få resultaten som en kolumnvektor (vertikalt) istället för en radvektor (horisontellt). Det är också ett exempel på hur man kan kombinera funktioner, så kallad nesting. XLETAUPP() kan alltså också användas i andra funktioner, så kallad nesting. Fördelen med XLETAUPP() är dock att vi högre utsträckning slipper nesting jämfört med LETARAD(). Även om det är väldigt användbart att kunna bygga långa formler med hjälp av flera olika funktioner för att lösa specifika problem, blir det genast komplicerat och tidskrävande många gånger.
Det är alltså ganska stora skillnader i XLETAUPP och de övriga två. Jag har påvisat vissa skillnader mellan LETAUPP() och LETARAD(), varför jag nu övergår till att visa skillnaderna i LETARAD() och XLETAUPP().
Varför är XLETAUPP() bättre att använda?
Det är stora skillnader mellan LETARAD() och XLETAUPP(), och således stora skillnader mellan XLETAUPP() och LETAUPP(). Det är färre skillnader mellan LETAUPP() och LETARAD(), varför jag nu kommer släppa den förstnämnda tillsvidare.
Kolumnindex
LETARAD() använder tabellmatris som andra argument. Detta är alltså var i uppslagsvärdet existerar, den inkluderar alltså kolumnen där vi vill hitta värdet vi söker. Som tredje argument använder LETARAD() kolumnindex. Det används för att indikera för funktionen i vilken kolumn värdet skall återfinnas. Funktionen är programmerad så att den ska söka efter uppslagsvärdet i den vänstra kolumnen i detta intervall och returnera ett värde som ligger till höger, indexerat av det tredje argumentet, kolumnindex.
XLETAUPP() däremot, separerar sökmatrisen och returmatrisen i två argument. Alltså, sökmatrisen (andra argumentet) ska innehålla det värde som funktionen kommer söka efter, och returmatrisen (tredje argumentet) kommer innehålla det värde som ska returneras.
Jag kan också passa på att påpeka att XLETAUPP() tekniskt sett inte returnerar värden, funktionen returnerar referenser. INDEX() är en annan funktion som returnerar en referens. Vad detta betyder kommer jag inte att behandla här, men det är faktiskt också en av XLETAUPP()s styrkor.
Denna nämnda separation av sök- och returmatris i XLETAUPP() gör funktionen mer flexibel än LETARAD(). Det spelar alltså ingen roll var kolumnerna befinner sig eller inte.
Addera kolumner
Vad som beskrivs under föregående rubrik får konsekvensen att LETARAD() kan returnera fel värde om en kolumn byter plats, adderas eller tas bort. Detta är inget man behöver tänka på om man istället använder sig av XLETAUPP() då den inte tar in kolumnindex som ett argument, vilket LETARAD() gör.
Felmeddelande och standardbeteenden
LETARAD() har ingen funktion för att hantera värden som funktionen inte kan hitta, som tidigare nämnts. Ett alternativ hade alltså kunnat vara att kapsla LETARAD() i en OM()-funktion eller kanske ännu hellre än OMFEL()-funktion. XLETAUPP() tillåter användaren att anpassa ett utdatameddelande om sökvärdet inte finns i tabellen.
Vad som också bör nämnas igen är funktionernas standardbeteenden. LETARAD() utför en ungefärlig matchning så länge inte något annat anges. XLETAUPP() söker en exakt matchning om inte annat anges. Därför är en av fallgroparna med LETARAD() att det lättare kan bli fel.
Senaste förekomsten av ett värde
XLETAUPP()s sista argument (det tredje valfria) kan användas för leta efter den sista förekomsten av ett värde. Vi kan välja att söka från det sista till första, eller första till sista. Detta är något som begränsar LETARAD(). Det behövs andra funktioner för att få till detta med LETARAD().
Jokertecken
Med XLETAUPP() kan man utföra partiella matchningar, dvs matchningar med så kallade jokertecken. Dessa jokertecken är i formen av en asterisk (*), och illustreras av bilden nedan:
Notera att jag i bilden också visar ett exempel för hur argumentet med felmeddelanden kan användas, alltså det fjärde argumentet. I det femte argumentet måste man handgripligen säga åt funktionen att göra en jokerteckensökning.
Svagheter i XLETAUPP()
Denna enda svagheten är nog att den inte är tillgänglig i tidigare Excel-/Officeversioner. Därför kan det ändå vara väldigt användbart för många att lära sig bemästra LETAUPP() och LETARAD() för att sedan bygga mer och mer komplexa formler av flera olika funktioner. Detta kan vara bra att tänka på om du delar kalkylblad med någon.
Tänk också på att det alltid är en risk att inkludera rubriker i någon av funktionerna. Detta gäller alltså även XLETAUPP().
Sammanfattning
LETARAD() | XLETAUPP() | |
Exakt match som standard | Nej | Ja |
Stödjer exakt matchning | Ja | Ja |
Kräver sorterade värden | Ja, för ungefärlig matchning | Ja, i ett väldigt specifikt fall* |
Kan returnera fel värden | Ja, vid ungefärlig matchning | Ja, i ett väldigt specifikt fall* |
Returnerar värden till höger om sökområdet | Ja | Ja |
Returnerar flera värden/referenser | Nej | Ja |
Söker från toppen-till-botten | Ja | Ja |
Söker från botten-till-toppen | Nej | Ja |
Stödjer partiell matchning | Nej | Ja |
Addera kolumner leder till att funktionen felar | Ja | Nej |
*vid binära sökningar. Vet du inte vad en binär sökning är, kommer du sannolikt aldrig använda det heller. |
Tabellen ovan ger en övergripande översikt för vad som skiljer LETARAD() från XLETAUPP(). Funktionen LETAUPP() ska dock inte helt glömmas bort. Det går att sammanfatta LETAUPP() som en mycket simplare variant av XLETAUPP(), då den beter sig ungefär som den sistnämnda funktionen, men saknar väldigt mycket av XLETAUPP()s finess. Notera dock att det att ändå finns situationer, och framförallt en specifik situation där LETAUPP() är att föredra framför LETARAD().
XLETAUPP() är ändå en klar förbättring av de två andra funktionerna. Jämför vi framförallt med LETAUPP() låter den oss kringgå många av de tidskrävande formler som LETARAD() kan kräva för mer komplicerade problem. Som sagt ska vi inte glömma LETARAD() och LETAUPP() riktigt än, då många fortfarande förlitar sig på dessa, men XLETAUPP() är ändå en välbehövlig förbättring.
Jag hoppas detta har hjälpt någon att förstå skillnader i de tre funktionerna. Jag uppmuntrar alla att vara lekfull med funktionerna och prova sig fram. Har någon fått blodad tand för dessa tre funktioner, så uppmuntras det att gå kursen Excelkurs Bas och / eller Excelfunktioner Fördjupning.