INDEX MATCH MATCH MATCH i Excel för tvådimensionell sökning

  • Dela Detta
Michael Brown

I handledningen visas några olika formler för att utföra tvådimensionella sökningar i Excel. Titta igenom alternativen och välj din favorit :)

När du söker efter något i dina Excel-kalkylblad söker du oftast vertikalt i kolumner eller horisontellt i rader. Men ibland behöver du leta över både rader och kolumner. Med andra ord vill du hitta ett värde i skärningspunkten mellan en viss rad och en viss kolumn. Detta kallas för matrisuppslag (alias 2-dimensionell eller . 2-vägs uppslag ), och den här handledningen visar hur man gör det på fyra olika sätt.

    Excel INDEX MATCH MATCH-formel

    Det populäraste sättet att göra en dubbelriktad sökning i Excel är att använda INDEX MATCH MATCH. Det är en variant av den klassiska INDEX MATCH-formeln där du lägger till ytterligare en MATCH-funktion för att få fram både rad- och kolumnnummer:

    INDEX ( data_array , MATCH ( vlookup_value , Lookup_column_range , 0), MATCH ( hlookup-värde , lookup_row_range , 0))

    Låt oss till exempel göra en formel för att ta fram en population av ett visst djur under ett visst år från tabellen nedan. Till att börja med definierar vi alla argument:

    • Data_array - B2:E4 (dataceller, exklusive rad- och kolumnrubriker)
    • Vlookup_värde - H1 (måldjur)
    • Lookup_column_range - A2:A4 (radrubriker: djurnamn) - A3:A4
    • Hlookup_värde - H2 (målår)
    • Lookup_row_range - B1:E1 (kolumnrubriker: år)

    Om du lägger ihop alla argumenten får du denna formel för tvåvägssökning:

    =INDEX(B2:E4, MATCH(H1, A2:A4, 0), MATCH(H2, B1:E1, 0))

    Hur denna formel fungerar

    Även om det kan se lite komplicerat ut vid en första anblick är formelns logik egentligen enkel och lätt att förstå. INDEX-funktionen hämtar ett värde från datamatrisen baserat på rad- och kolumnnumren, och två MATCH-funktioner levererar dessa nummer:

    INDEX(B2:E4, row_num, column_num)

    Här utnyttjar vi förmågan hos MATCH(lookup_value, lookup_array, [match_type]) att returnera en Relativ position. Lookup_value Lookup_array .

    För att få fram radnumret söker vi efter det djur som är av intresse (H1) i radrubrikerna (A2:A4):

    MATCH(H1, A2:A4, 0)

    För att få fram kolumnnumret söker vi efter målåret (H2) i kolumnrubrikerna (B1:E1):

    MATCH(H2, B1:E1, 0)

    I båda fallen söker vi efter exakt matchning genom att sätta det tredje argumentet till 0.

    I det här exemplet returnerar den första MATCH 2 eftersom vårt vlookup-värde (Isbjörn) finns i A3, som är den andra cellen i A2:A4. Den andra MATCH returnerar 3 eftersom hlookup-värdet (2000) finns i D1, som är den tredje cellen i B1:E1.

    Med tanke på ovanstående kan formeln reduceras till:

    INDEX(B2:E4, 2, 3)

    Och återge ett värde i skärningspunkten mellan den andra raden och den tredje kolumnen i datamatrisen B2:E4, vilket är ett värde i cellen D3.

    Formlerna VLOOKUP och MATCH för tvåvägssökning

    Ett annat sätt att göra en tvådimensionell sökning i Excel är att använda en kombination av funktionerna VLOOKUP och MATCH:

    VLOOKUP( vlookup_value , tabell_array , MATCH( hlookup_value , lookup_row_range , 0), FALSE)

    För vår exempeltabell har formeln följande utformning:

    =VLOOKUP(H1, A2:E4, MATCH(H2, A1:E1, 0), FALSE)

    Var:

    • Tabell_array - A2:E4 (dataceller, inklusive radrubriker)
    • Vlookup_värde - H1 (måldjur)
    • Hlookup_värde - H2 (målår)
    • Lookup_row_range - A1:E1 (kolumnrubriker: år)

    Hur denna formel fungerar

    Formelns kärna är VLOOKUP-funktionen som är konfigurerad för exakt matchning (det sista argumentet är inställt på FALSE), som söker efter uppslagsvärdet (H1) i den första kolumnen i tabellmatrisen (A2:E4) och returnerar ett värde från en annan kolumn i samma rad. För att bestämma vilken kolumn som ska returnera ett värde från använder du MATCH-funktionen som också är konfigurerad för exakt matchning (det sista argumentet är inställt på 0):

    MATCH(H2, A1:E1, 0)

    MATCH söker efter värdet i H2 genom kolumnrubrikerna (A1:E1) och returnerar den relativa positionen för den funna cellen. I vårt fall hittas målåret (2010) i E1, som är nummer 5 i uppslagsraden. Så numret 5 går till col_index_num argument för VLOOKUP:

    VLOOKUP(H1, A2:E4, 5, FALSE)

    VLOOKUP tar det därifrån, hittar en exakt matchning för sitt uppslagsvärde i A2 och returnerar ett värde från den femte kolumnen i samma rad, vilket är cellen E2.

    Viktigt att notera: För att formeln ska fungera korrekt, tabell_array (A2:E4) i VLOOKUP och Lookup_array av MATCH (A1:E1) måste ha samma antal kolumner, annars kan det antal som MATCH skickar till col_index_num kommer att vara felaktig (kommer inte att motsvara kolonnens position i tabell_array ).

    XLOOKUP-funktionen för att titta i rader och kolumner

    Microsoft har nyligen introducerat ytterligare en funktion i Excel som är tänkt att ersätta alla befintliga uppslagsfunktioner som VLOOKUP, HLOOKUP och INDEX MATCH. XLOOKUP kan bland annat titta på skärningspunkten mellan en specifik rad och kolumn:

    XLOOKUP( vlookup_value , vlookup_column_range , XLOOKUP( hlookup_value , hlookup_row_range , data_array ))

    För vårt datamaterial ser formeln ut på följande sätt:

    =XLOOKUP(H1, A2:A4, XLOOKUP(H2, B1:E1, B2:E4))

    Observera: XLOOKUP är för närvarande en betafunktion som endast är tillgänglig för Office 365-prenumeranter som är med i Office Insiders-programmet.

    Hur denna formel fungerar

    Formeln använder XLOOKUP:s förmåga att returnera en hel rad eller kolumn. Den inre funktionen söker efter målåret i rubrikraden och returnerar alla värden för det året (i det här exemplet, för år 1980). Dessa värden går till return_array argumentet i den yttre XLOOKUP:

    XLOOKUP(H1, A2:A4, {22000;25000;700}))

    Den yttre XLOOKUP-funktionen söker efter måldjuret i kolumnrubrikerna och returnerar värdet i samma position från return_array.

    SUMPRODUCT-formel för tvåvägssökning

    SUMPRODUCT-funktionen är som en schweizerkniv i Excel - den kan göra så många saker utöver sitt ursprungliga syfte, särskilt när det gäller att utvärdera flera kriterier.

    Om du vill söka upp två kriterier, i rader och kolumner, använder du den här generiska formeln:

    SUMPRODUKT( vlookup_column_range = vlookup_value ) * ( hlookup_row_range = hlookup_value ), data_array )

    För att utföra en tvåvägssökning i vårt dataset gäller följande formel:

    =SUMPRODUKT((A2:A4=H1) * (B1:E1=H2), B2:E4)

    Nedanstående syntax fungerar också:

    =SUMPRODUKT((A2:A4=H1) * (B1:E1=H2) * B2:E4)

    Hur denna formel fungerar

    I formelns kärna jämför vi två uppslagsvärden mot rad- och kolumnrubrikerna (måldjuret i H1 mot alla djurnamn i A2:A4 och målåret i H2 mot alla årtal i B1:E1):

    (A2:A4=H1) * (B1:E1=H2)

    Detta resulterar i två matriser med TRUE- och FALSE-värden, där TRUE-värdena representerar matchningar:

    {FALSE;FALSE;TRUE} * {FALSE,TRUE,FALSE,FALSE,FALSE}

    Multiplikationen omvandlar värdena TRUE och FALSE till 1:or och 0:or och ger en tvådimensionell matris med 4 kolumner och 3 rader (raderna är separerade med semikolon och varje datakolumn med ett kommatecken):

    {0,0,0,0;0,0,0,0;0,1,0,0}

    Funktionen SUMPRODUCT multiplicerar elementen i ovanstående matris med elementen i B2:E4 i samma positioner:

    {0,0,0,0;0,0,0,0;0,1,0,0} * {22000,13800,8500,3500;25000,23000,22000,20000;700,2000,2300,2500}

    Och eftersom multiplicering med noll ger noll, är det bara det objekt som motsvarar 1 i den första matrisen som överlever:

    SUMPRODUCT({0,0,0,0;0,0,0,0;0,2000,0,0})

    Slutligen summerar SUMPRODUCT elementen i den resulterande matrisen och returnerar värdet 2000.

    Observera: Om din tabell har mer än en rad och/eller kolumnrubriker med samma namn kommer den slutliga matrisen att innehålla mer än ett annat nummer än noll, och alla dessa nummer kommer att adderas. Resultatet blir en summa av värden som uppfyller båda kriterierna. Det är det som gör att formeln SUMPRODUCT skiljer sig från INDEX MATCH MATCH och VLOOKUP, som returnerar den först funna matchningen.

    Matrixuppslag med namngivna områden (explicit skärning)

    Ett annat otroligt enkelt sätt att göra en matrisuppslagning i Excel är att använda namngivna intervall. Så här gör du:

    Del 1: Namnge kolumner och rader

    Det snabbaste sättet att namnge varje rad och varje kolumn i tabellen är följande:

    1. Välj hela tabellen (A1:E4 i vårt fall).
    2. På den Formler på fliken Definierade namn grupp, klicka på Skapa från urval eller tryck på genvägen Ctrl + Shift + F3.
    3. I Skapa namn från urval dialogrutan, välj Översta raden och Vänster kolumn, och klicka på OK.

    Detta skapar automatiskt namn baserat på rad- och kolumnrubrikerna. Det finns dock ett par invändningar:

    • Om dina kolumn- och/eller radrubriker är siffror eller innehåller specifika tecken som inte är tillåtna i Excel-namn, kommer namnen för sådana kolumner och rader inte att skapas. För att se en lista över skapade namn öppnar du Namnhanteraren ( Ctrl + F3 ). Om vissa namn saknas, definiera dem manuellt enligt beskrivningen i Hur man namnger ett intervall i Excel.
    • Om några av rad- eller kolumnrubrikerna innehåller mellanslag ersätts mellanslagen med t.ex. understrykningar, Polar_bear .

    För vår exempeltabell skapade Excel automatiskt bara radernamnen. Kolumnnamnen måste skapas manuellt eftersom kolumnrubrikerna är siffror. För att komma till rätta med detta kan du helt enkelt börja siffrorna med understrykningar, som t.ex. _1990 .

    Som ett resultat har vi följande namngivna områden:

    Del 2: Gör en formel för matrisuppslag

    Om du vill ta fram ett värde i skärningspunkten mellan en viss rad och kolumn skriver du bara en av följande generiska formler i en tom cell:

    = row_name kolumn_namn

    Eller tvärtom:

    = kolumn_namn row_name

    För att få fram populationen av blåvalar år 1990 är formeln till exempel så enkel som:

    =Blue_whale _1990

    Om någon behöver mer detaljerade instruktioner kan du gå igenom följande steg:

    1. Skriv likhetstecknet (=) i en cell där du vill att resultatet ska visas.
    2. Börja skriva namnet på målraden, till exempel, Blue_whale När du har skrivit ett par tecken visar Excel alla befintliga namn som matchar din inmatning. Dubbelklicka på det önskade namnet för att skriva in det i formeln:
    3. Efter radnamnet skriver du ett utrymme , som fungerar som en Operatör för skärningspunkter. i det här fallet.
    4. Ange namnet på målkolumnen ( _1990 i vårt fall).
    5. Så snart både rad- och kolumnnamnet har angetts markerar Excel motsvarande rad och kolumn i tabellen och du trycker på Enter för att slutföra formeln:

    Din matrisuppslagning är klar, och nedanstående skärmdump visar resultatet:

    Så här gör du i rader och kolumner i Excel. Tack för att du läste och hoppas att vi ses på vår blogg nästa vecka!

    Tillgängliga nedladdningar

    Arbetsbok för 2-dimensionell uppslagsanalys

    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.