Excel XLOOKUP-funktionen med formelexempel

  • Dela Detta
Michael Brown

I handledningen presenteras XLOOKUP - den nya funktionen för vertikala och horisontella sökningar i Excel. Vänsteruppslag, sista matchning, Vlookup med flera kriterier och många andra saker som tidigare krävde en raketvetenskaplig examen för att åstadkomma har nu blivit lika enkla som ABC.

Vilken funktion använder du när du behöver söka i Excel? Är det hörnstenen VLOOKUP eller dess horisontella syskon HLOOKUP? I mer komplexa fall använder du den kanoniska INDEX MATCH-kombinationen eller låter du Power Query göra jobbet? Den goda nyheten är att du inte behöver välja längre - alla dessa metoder lämnar plats för en kraftfullare och mångsidigare efterföljare, funktionen XLOOKUP.

Hur är XLOOKUP bättre? På många sätt! Den kan titta vertikalt och horisontellt, till vänster och ovanför, söka med flera kriterier och till och med returnera en hel kolumn eller rad med data, inte bara ett värde. Det har tagit Microsoft över tre decennier, men äntligen har de lyckats utforma en robust funktion som övervinner många frustrerande fel och svagheter hos VLOOKUP.

Vad är haken? Tyvärr finns det en. XLOOKUP-funktionen är endast tillgänglig i Excel för Microsoft 365, Excel 2021 och Excel för webben.

    Excel XLOOKUP-funktionen - syntax och användningsområden

    Funktionen XLOOKUP i Excel söker i ett intervall eller en matris efter ett angivet värde och returnerar det relaterade värdet från en annan kolumn. Den kan söka både vertikalt och horisontellt och utföra en exakt matchning (standard), en ungefärlig (närmaste) matchning eller en jokerordsmatchning (partiell).

    Syntaxen för XLOOKUP-funktionen är följande:

    XLOOKUP(lookup_value, lookup_array, return_array, [if_not_found], [match_mode], [search_mode])

    De tre första argumenten är obligatoriska och de tre sista är valfria.

    • Lookup_value - det värde som ska sökas.
    • Lookup_array - det område eller den matris som ska sökas.
    • Return_array - intervallet eller matrisen från vilken värden ska returneras.
    • If_not_found [valfritt] - det värde som ska returneras om ingen matchning hittas. Om det utelämnas returneras ett #N/A-fel.
    • Match_mode [valfritt] - den matchningstyp som ska utföras:
      • 0 eller utelämnas (standard) - exakt matchning. Om den inte hittas returneras ett #N/A-fel.
      • -1 - exakt matchning eller nästa mindre. Om ingen exakt matchning hittas returneras nästa mindre värde.
      • 1 - exakt matchning eller nästa större. Om en exakt matchning inte hittas returneras nästa större värde.
      • 2 - Jokertecken som matchar.
    • Sök_läge [valfritt] - sökriktningen:
      • 1 eller utelämnas (standard) - för att söka från första till sista.
      • -1 - för att söka i omvänd ordning, från sist till först.
      • 2 - binär sökning på data sorterade i stigande ordning.
      • -2 - binär sökning på data som är sorterade i fallande ordning.

      Enligt Microsoft, binär sökning finns med för avancerade användare. Det är en speciell algoritm som hittar positionen för ett uppslagsvärde i en sorterad matris genom att jämföra det med det mittersta elementet i matrisen. En binär sökning är mycket snabbare än en vanlig sökning, men fungerar bara korrekt på sorterade data.

    Grundläggande XLOOKUP-formel

    För att få en bättre förståelse kan vi bygga en Xlookup-formel i dess enklaste form för att utföra en exakt sökning. För detta behöver vi bara de tre första argumenten.

    Antag att du har en sammanfattande tabell med information om de fem haven på jorden. Du vill få fram arealen av ett visst hav i F1 ( Lookup_value ). Med havsnamnen i A2:A6 ( Lookup_array ) och områden i C2:C6 ( return_array ), så lyder formeln som följer:

    =XLOOKUP(F1, A2:A6, C2:C6)

    Översatt till vanlig engelska står det: sök efter F1-värdet i A2:A6 och returnera ett värde från C2:C6 i samma rad. Inga kolumnindexnummer, ingen sortering, inga andra löjliga egenheter med Vlookup! Det fungerar bara :)

    XLOOKUP vs. VLOOKUP i Excel

    XLOOKUP har många fördelar jämfört med traditionell VLOOKUP. På vilket sätt är den bättre än VLOOKUP? Här är en lista över de 10 bästa funktionerna som överträffar alla andra uppslagsfunktioner i Excel:

    1. Vertikal och horisontell uppslagsfunktion XLOOKUP-funktionen har fått sitt namn eftersom den kan söka upp både vertikalt och horisontellt.
    2. Titta åt vilket håll som helst: höger, vänster, nedåt eller uppåt. Medan VLOOKUP endast kan söka i den vänstra kolumnen och HLOOKUP i den översta raden, har XLOOKUP inga sådana begränsningar. Den ökända vänstersökningen i Excel är inte längre ett problem!
    3. Exakt matchning som standard I de flesta situationer letar du efter en exakt matchning, och XLOOKUP returnerar den som standard (till skillnad från VLOOKUP-funktionen som som standard är en ungefärlig matchning). Naturligtvis kan du få XLOOKUP att utföra en ungefärlig matchning också om det behövs.
    4. Partiell matchning med jokertecken När du bara känner till en del av sökvärdet, men inte hela värdet, är det praktiskt med en jokerordmatchning.
    5. Sök i omvänd ordning För att få fram den sista förekomsten var du tidigare tvungen att vända på ordningen i dina källdata. Nu ställer du bara in search_mode (sökläge) till -1 för att tvinga Xlookup-formeln att söka bakifrån och återge den sista matchningen.
    6. Återge flera värden . Genom att manipulera med return_array argumentet kan du hämta en hel rad eller kolumn med data som är relaterade till ditt uppslagsvärde.
    7. Sök med flera kriterier . Excel XLOOKUP hanterar matriser direkt, vilket gör det möjligt att utföra uppslag med flera kriterier.
    8. Om felfunktionalitet Traditionellt använder vi IFNA-funktionen för att fånga upp #N/A-fel. XLOOKUP innehåller denna funktionalitet i if_not_found som gör det möjligt att skriva ut din egen text om ingen giltig matchning hittas.
    9. Införanden/uttag av kolumner Ett av de mest irriterande problemen med VLOOKUP är att om du lägger till eller tar bort kolumner bryter du formeln eftersom returkolumnen identifieras av indexnumret. Med XLOOKUP anger du returområdet, inte numret, vilket innebär att du kan lägga till och ta bort så många kolumner som du behöver utan att något går sönder.
    10. Bättre prestanda . VLOOKUP kan göra dina kalkylblad långsammare eftersom den inkluderar hela tabellen i beräkningarna, vilket leder till att betydligt fler celler behandlas än vad som egentligen behövs. XLOOKUP hanterar endast de uppslags- och returmatriser som den verkligen är beroende av.

    Hur man använder XLOOKUP i Excel - exempel på formler

    Följande exempel visar de mest användbara XLOOKUP-funktionerna i praktiken. Dessutom kommer du att upptäcka ett par icke-triviala användningsområden som kommer att ta dina Excel-kunskaper om uppslag till en ny nivå.

    Titta upp vertikalt och horisontellt

    Microsoft Excel brukade ha två funktioner för olika typer av uppslag, var och en med sin egen syntax och sina egna användningsregler: VLOOKUP för att titta vertikalt i en kolumn och HLOOKUP för att titta horisontellt i en rad.

    XLOOKUP-funktionen kan göra båda med samma syntax. Skillnaden ligger i vad du anger för arrayer för sökning och retur.

    För v-lookup, ange kolumner:

    =XLOOKUP(E1, A2:A6, B2:B6)

    För h-lookup anger du rader i stället för kolumner:

    =XLOOKUP(I1, B1:F1, B2:F2)

    Vänstersökning utförs nativt

    I tidigare versioner av Excel var INDEX MATCH-formeln det enda tillförlitliga sättet att titta till vänster eller ovanför. Nu behöver du inte längre kombinera två funktioner där en skulle räcka. Ange bara målmatchningsmatchningsmatrisen så hanterar XLOOKUP den utan problem oavsett var den är placerad.

    Som ett exempel kan vi lägga till Rang kolumnen till vänster i vår provtabell. Målet är att få fram rangordningen för havet i F1. VLOOKUP skulle snubbla här eftersom den bara kan returnera ett värde från en kolumn till höger om uppslagskolumnen. En Xlookup-formel klarar det utan problem:

    =XLOOKUP(F1, B2:B6, A2:A6)

    På samma sätt kan du titta ovanför när du söker horisontellt i rader.

    XLOOKUP med exakt och ungefärlig matchning

    Matchningsbeteendet styrs av det femte argumentet som kallas match_mode Som standard görs en exakt matchning.

    Var uppmärksam på att även om du väljer en ungefärlig matchning ( match_mode till 1 eller -1) söker funktionen fortfarande efter en exakt match först. Skillnaden ligger i vad den returnerar om ett exakt uppslagsvärde inte hittas.

    Argumentet Match_mode:

    • 0 eller utelämnas - exakt matchning; om den inte hittas - #N/A-fel.
    • -1 - Exakt matchning; om den inte hittas - nästa mindre objekt.
    • 1 - exakt likadan; om den inte hittas - nästa större artikel.

    Exakt matchning XLOOKUP

    Detta är det alternativ som du förmodligen använder 99 % av de gånger du gör sökningar i Excel. Eftersom en exakt matchning är XLOOKUP:s standardbeteende kan du utelämna match_mode och anger endast de tre första argumenten som krävs.

    I vissa situationer fungerar dock inte en exakt matchning. Ett typiskt scenario är när din uppslagstabell inte innehåller alla värden, utan snarare "milstolpar" eller "gränser" som kvantitetsbaserade rabatter, försäljningsbaserade provisioner osv.

    Vår exempeluppslagstabell visar korrelationen mellan provresultat och betyg. Som du kan se i skärmdumpen nedan fungerar en exakt matchning endast när resultatet för en viss elev matchar värdet i uppslagstabellen exakt (som Christian i rad 3). I alla andra fall returneras ett #N/A-fel.

    =XLOOKUP(F2, $B$2:$B$6, $C$2:$C$6)

    För att få betyg i stället för #N/A-fel måste vi leta efter en ungefärlig överensstämmelse, vilket visas i nästa exempel.

    Ungefärlig matchning XLOOKUP

    Om du vill utföra en ungefärlig sökning ställer du in match_mode argumentet till antingen -1 eller 1, beroende på hur dina data är organiserade.

    I vårt fall listar uppslagstabellen de nedre gränserna för betygen. Vi ställer alltså in match_mode till -1 för att söka efter nästa mindre värde när en exakt matchning inte hittas:

    =XLOOKUP(F11, $B$11:$B$15, $C$11:$C$15, ,-1)

    Brian har till exempel betyget 98 (F2). Formeln söker efter detta uppslagsvärde i B2:B6 men hittar det inte. Den söker sedan efter nästa mindre post och hittar 90, vilket motsvarar betyget A:

    Om vår uppslagstabell innehöll de övre gränserna för betygen skulle vi ställa in match_mode till 1 för att söka efter nästa större objekt om en exakt matchning misslyckas:

    =XLOOKUP(F2, $B$2:$B$6, $C$2:$C$6, ,1)

    Formeln söker efter 98 och kan återigen inte hitta det. Den här gången försöker den hitta nästa större värde och får fram 100, vilket motsvarar klass A:

    Tips: När du kopierar en Xlookup-formel till flera celler kan du låsa uppslags- eller returintervallen med absoluta cellreferenser (t.ex. $B$2:$B$6) för att förhindra att de ändras.

    XLOOKUP med partiell matchning (jokertecken)

    Om du vill utföra en sökning med partiell matchning ställer du in match_mode till 2, vilket instruerar XLOOKUP-funktionen att behandla jokertecknen:

    • En asterisk (*) - representerar en valfri sekvens av tecken.
    • Ett frågetecken (?) - representerar ett enskilt tecken.

    För att se hur det fungerar kan du ta följande exempel: I kolumn A har du några smartphonemodeller och i kolumn B deras batterikapacitet. Du är nyfiken på batteriet i en viss smartphonemodell. Problemet är att du inte är säker på att du kan skriva in modellnamnet exakt så som det står i kolumn A. För att lösa detta skriver du in den del som definitivt finns där och ersätter den återstående delen medtecken med jokertecken.

    Om du till exempel vill få information om batteriet i iPhone X använder du den här formeln:

    =XLOOKUP("*iphone X*", A2:A8, B2:B8, ,2)

    Eller så anger du den kända delen av uppslagsvärdet i en cell och sammanfogar cellreferensen med jokertecknen:

    =XLOOKUP("*"&E1& "*", A2:A8, B2:B8, ,2)

    XLOOKUP i omvänd ordning för att få fram den sista förekomsten

    Om din tabell innehåller flera förekomster av uppslagsvärdet kan du ibland behöva returnera sista matchen Om du vill ha det gjort konfigurerar du din Xlookup-formel så att den söker i omvänd ordning.

    Sökriktningen styrs av det sjätte argumentet som heter search_mode (sökläge) :

    • 1 eller utelämnas (standard) - söker från första till sista värdet, dvs. från topp till botten med vertikal sökning eller från vänster till höger med horisontell sökning.
    • -1 - söker i omvänd ordning från sista till första värdet.

    Som exempel kan vi återge den senaste försäljningen som en viss säljare har gjort. För detta sätter vi ihop de tre första argumenten (G1 för Lookup_value , B2:B9 för Lookup_array , och D2:D9 för return_array ) och sätter -1 i det femte argumentet:

    =XLOOKUP(G1, B2:B9, D2:D9, , ,-1)

    Det är väl enkelt och enkelt?

    XLOOKUP för att återge flera kolumner eller rader

    Ytterligare en fantastisk funktion i XLOOKUP är dess förmåga att returnera mer än ett värde för samma matchning. Allt görs med standardsyntaxen och utan några extra manipulationer!

    Anta att du vill hämta alla uppgifter om den säljare som du är intresserad av (F2) från tabellen nedan. Det du behöver göra är att ange ett intervall, inte en enda kolumn eller rad, för return_array argument:

    =XLOOKUP(F2, A2:A7, B2:D7)

    Du anger formeln i den övre vänstra cellen i resultatområdet och Excel fyller automatiskt ut resultaten i intilliggande tomma celler. I vårt fall innehåller returområdet (B2:D7) tre kolumner ( Datum , Artikel och Belopp ), och alla tre värdena återges i intervallet G2:I2.

    Om du hellre vill ordna resultaten vertikalt i en kolumn kan du bädda in XLOOKUP i TRANSPOSE-funktionen för att vända den returnerade matrisen:

    =TRANSPOSE(XLOOKUP(G1, A2:A7, B2:D7))

    På samma sätt kan du returnera en hel kolumn med data, till exempel Belopp För detta använder du cell F1 som innehåller "Amount" som Lookup_value , intervallet A1:D1 som innehåller kolumnrubrikerna som Lookup_array och intervallet A2:D7 som innehåller alla uppgifter som return_array .

    =XLOOKUP(F1, A1:D1, A2:D7)

    Eftersom flera värden fylls på i angränsande celler ska du se till att du har tillräckligt många tomma celler till höger eller nedåt. Om Excel inte kan hitta tillräckligt många tomma celler uppstår felet #SPILL!

    Tips: XLOOKUP kan inte bara returnera flera poster utan också ersätta dem med andra värden som du anger. Ett exempel på en sådan bulkersättning finns här: Hur man söker och ersätter flera värden med XLOOKUP.

    XLOOKUP med flera kriterier

    En annan stor fördel med XLOOKUP är att det hanterar matriser nativt. Tack vare den här möjligheten kan du utvärdera flera kriterier direkt i Lookup_array argument:

    XLOOKUP(1, ( kriterier_område1 = kriterier1 ) * ( kriterier_område2 = kriterier2 ) * (...), return_array )

    Hur denna formel fungerar : Resultatet av varje kriterietest är en matris med TRUE- och FALSE-värden. Multiplikationen av matriserna omvandlar TRUE och FALSE till 1 respektive 0 och ger den slutliga uppslagsmatrisen. Som ni vet ger multiplikation med 0 alltid noll, så i uppslagsmatrisen representeras endast de objekt som uppfyller alla kriterier av 1. Och eftersom vårt uppslagsvärde är "1", tar Excel den första "1" i Lookup_array (första matchningen) och returnerar värdet från return_array i samma position.

    För att se hur formeln fungerar kan vi ta ut ett belopp från D2:D10 ( return_array ) med följande villkor:

    • Kriterier1 (datum) = G1
    • Kriterier2 (säljare) = G2
    • Kriterier3 (objekt) = G3

    Med datum i A2:A10 ( kriterier_område1 ), namn på säljare i B2:B10 ( kriterier_område2 ) och poster i C2:C10 ( kriterier_område3 ), får formeln följande form:

    =XLOOKUP(1, (B2:B10=G1) * (A2:A10=G2) * (C2:C10=G3), D2:D10)

    Även om Excel-funktionen XLOOKUP behandlar matriser fungerar den som en vanlig formel och avslutas med en vanlig Enter-knapptryckning.

    XLOOKUP-formeln med flera kriterier är inte begränsad till "lika med"-villkor. Du kan även använda andra logiska operatörer. Om du till exempel vill filtrera beställningar som gjorts på datumet G1 eller tidigare, anger du "<=G1" i det första kriteriet:

    =XLOOKUP(1, (A2:A10<=G1) * (B2:B10=G2) * (C2:C10=G3), D2:D10)

    Dubbel XLOOKUP

    Om du vill hitta ett värde i skärningspunkten mellan en viss rad och kolumn utför du den så kallade dubbel uppslag eller . matrisuppslag Ja, det kan Excel XLOOKUP också göra! Du bäddar helt enkelt in en funktion i en annan:

    XLOOKUP( lookup_value1 , Lookup_array1 , XLOOKUP( lookup_value2 , lookup_array2 , data_värden ))

    Hur denna formel fungerar : Formeln bygger på XLOOKUP:s förmåga att returnera en hel rad eller kolumn. Den inre funktionen söker efter sitt uppslagsvärde och returnerar en kolumn eller rad med relaterade data. Den matrisen skickas till den yttre funktionen som return_array .

    I det här exemplet ska vi hitta den försäljning som en viss säljare har gjort under ett visst kvartal. För detta anger vi sökvärdena i H1 (namn på säljare) och H2 (kvartal) och gör en tvåvägs Xlookup med följande formel:

    =XLOOKUP(H1, A2:A6, XLOOKUP(H2, B1:E1, B2:E6))

    Eller tvärtom:

    =XLOOKUP(H2, B1:E1, XLOOKUP(H1, A2:A6, B2:E6))

    Där A2:A6 är namn på säljare, B1:E1 är kvartal (kolumnrubriker) och B2:E6 är datavärden.

    En tvåvägssökning kan också utföras med en INDEX Match-formel och på några andra sätt. För mer information, se Tvåvägssökning i Excel.

    Om fel XLOOKUP

    När uppslagsvärdet inte hittas returnerar Excel XLOOKUP ett #N/A-fel. Det är ganska bekant och förståeligt för erfarna användare, men kan vara ganska förvirrande för nybörjare. För att ersätta standardfelnoteringen med ett användarvänligt meddelande skriver du din egen text i det fjärde argumentet som heter if_not_found .

    Tillbaka till det allra första exemplet som vi diskuterade i den här handledningen. Om någon anger ett ogiltigt oceannamn i E1 kommer följande formel uttryckligen att tala om för honom att "Ingen matchning har hittats":

    =XLOOKUP(E1, A2:A6, B2:B6, "Ingen matchning har hittats")

    Anteckningar:

    • if_not_found argumentet fångar endast #N/A-fel, inte alla fel.
    • #N/A-fel kan också hanteras med IFNA och VLOOKUP, men syntaxen är lite mer komplex och formeln är längre.

    Skiftlägeskänslig XLOOKUP

    Som standard behandlar XLOOKUP-funktionen små och stora bokstäver som samma tecken. Om du vill göra den känslig för stora och små bokstäver använder du EXACT-funktionen för Lookup_array argument:

    XLOOKUP(TRUE, EXACT( Lookup_value , Lookup_array ), return_array )

    Hur denna formel fungerar : EXACT-funktionen jämför uppslagsvärdet med varje värde i lookup array och returnerar TRUE om de är exakt likadana, inklusive bokstavsbokstäverna, och FALSE i annat fall. Denna array av logiska värden går till Lookup_array XLOOKUP söker efter värdet TRUE i ovanstående matris och returnerar en matchning i den returnerade matrisen.

    Om du till exempel vill få fram priset från B2:B7 ( return_array ) för posten i E1 ( lookup_value) , formeln i E2 är:

    =XLOOKUP(TRUE, EXACT(E1, A2:A7), B2:B7, "Not found")

    Observera: Om det finns två eller flera exakt samma värden i uppslagsarrayn (inklusive bokstavsbokstäver) returneras den första funna överensstämmelsen.

    Excel XLOOKUP fungerar inte

    Om formeln inte fungerar som den ska eller om det uppstår fel, beror det troligen på följande orsaker:

    XLOOKUP är inte tillgängligt i min Excel

    Funktionen XLOOKUP är inte bakåtkompatibel och finns endast i Excel för Microsoft 365 och Excel 2021 och kommer inte att finnas i tidigare versioner.

    XLOOKUP ger fel resultat

    Om din uppenbart korrekta Xlookup-formel returnerar ett felaktigt värde är det troligt att uppslags- eller returintervallet "flyttades" när formeln kopierades nedåt eller tvärs över. För att förhindra att detta händer ska du se till att alltid låsa båda intervallen med absoluta cellreferenser (t.ex. $A$2:$A$10).

    XLOOKUP returnerar #N/A fel

    Ett #N/A-fel betyder bara att uppslagsvärdet inte har hittats. För att åtgärda detta kan du försöka söka efter en ungefärlig matchning eller informera användarna om att ingen matchning har hittats.

    XLOOKUP returnerar felet #VALUE

    Felet #VALUE! uppstår om sök- och returmatriserna har inkompatibla dimensioner. Det är t.ex. inte möjligt att söka i en horisontell matris och returnera värden från en vertikal matris.

    XLOOKUP returnerar #REF-fel

    Ett #REF!-fel uppstår när du söker mellan två olika arbetsböcker, varav den ena är stängd. För att åtgärda felet öppnar du helt enkelt båda filerna.

    Som du just har sett har XLOOKUP många fantastiska funktioner som gör den till DEN funktionen för nästan alla sökningar i Excel. Jag tackar dig för att du läste och hoppas att vi ses på vår blogg nästa vecka!

    Arbetsbok för övning för nedladdning

    Exempel på Excel XLOOKUP-formler (.xlsx-fil)

    Michael Brown är en hängiven teknikentusiast med en passion för att förenkla komplexa processer med hjälp av mjukvaruverktyg. Med mer än ett decenniums erfarenhet inom teknikbranschen har han finslipat sina kunskaper i Microsoft Excel och Outlook, samt Google Sheets och Docs. Michaels blogg är tillägnad att dela med sig av sin kunskap och expertis med andra, och tillhandahåller lätta att följa tips och handledningar för att förbättra produktiviteten och effektiviteten. Oavsett om du är en erfaren proffs eller nybörjare, erbjuder Michaels blogg värdefulla insikter och praktiska råd för att få ut det mesta av dessa viktiga programvaruverktyg.