INDEX MATCH i Google Sheets - ett annat sätt för vertikal sökning

  • Dela Detta
Michael Brown

När du behöver hitta data i arket som motsvarar en viss nyckelpost är det vanligtvis VLOOKUP i Google Sheets som du vänder dig till. Men så är det: VLOOKUP ger dig begränsningar nästan omedelbart. Därför är det bättre att du ökar resurserna för uppgiften genom att lära dig INDEX MATCH.

INDEX MATCH i Google Sheets är en kombination av två funktioner: INDEX och MATCH. När de används tillsammans fungerar de som ett bättre alternativ till Google Sheets VLOOKUP. Låt oss ta reda på deras möjligheter tillsammans i det här blogginlägget. Men först vill jag ge dig en snabb rundtur i deras roller i kalkylblad.

    Google Sheets MATCH-funktion

    Jag skulle vilja börja med Google Sheets MATCH eftersom det är väldigt enkelt. Det söker igenom data efter ett visst värde och returnerar dess position:

    =MATCH(search_key, range, [search_type])
    • Sök_nyckel är den skiva du letar efter.
    • sortiment är antingen en rad eller en kolumn att söka i. Krävs.

      MATCH accepterar endast endimensionella matriser: antingen rad eller kolumn.

    • search_type är valfri och anger om matchningen ska vara exakt eller ungefärlig. Om den utelämnas är den 1 som standard:
      • 1 betyder att intervallet sorteras i stigande ordning. Funktionen hämtar det största värdet som är mindre än eller lika med ditt Sök_nyckel .
      • 0 får funktionen att leta efter en exakt matchning om intervallet inte är sorterat.
      • -1 visar att posterna rangordnas med hjälp av fallande sortering. I det här fallet tar funktionen fram det minsta värdet som är större än eller lika med din Sök_nyckel .

    Här är ett exempel: För att få fram positionen för ett visst bär i listan över alla bär behöver jag följande MATCH-formel i mitt Google Sheets:

    =MATCH("Blåbär", A1:A10, 0)

    Google Sheets INDEX-funktion

    Medan MATCH visar var du ska leta efter ditt värde (dess placering i intervallet), hämtar Google Sheets INDEX-funktionen själva värdet baserat på dess rad- och kolumnförskjutningar:

    =INDEX(referens, [rad], [kolumn])
    • referens är det område du ska titta på. Krävs.
    • rad är antalet rader som ska förskjutas från den allra första cellen i intervallet. Valfritt, 0 om det utelämnas.
    • kolumn , precis som rad , är antalet förskjutningskolumner. Också valfritt, även 0 om det utelämnas.

    Om du anger båda de valfria argumenten (rad och kolumn) returnerar Google Sheets INDEX en post från en målcell:

    =INDEX(A1:C10, 7, 1)

    Om du hoppar över ett av dessa argument kommer funktionen att ge dig hela raden eller kolumnen:

    =INDEX(A1:C10, 7)

    Hur du använder INDEX MATCH i Google Sheets - exempel på formler

    När INDEX och MATCH används tillsammans i kalkylblad är de som mest kraftfulla. De kan helt enkelt ersätta Google Sheets VLOOKUP och hämta den önskade posten från en tabell baserat på ditt nyckelvärde.

    Skapa din första INDEX MATCH-formel för Google Sheets

    Antag att du vill få fram uppgifter om lagerinformation om tranbär från samma tabell som jag använde ovan. Jag har bara bytt ut kolumnerna B och C (du får reda på varför lite senare).

    1. Nu finns alla bär i kolumn C. Funktionen MATCH i Google Sheets hjälper dig att hitta den exakta raden med tranbär: 8

      =MATCH("Cranberry", C1:C10, 0)

    2. Använd hela MATCH-formeln till en rad argumentet i INDEX-funktionen:

      =INDEX(A1:C10, MATCH("Cranberry", C1:C10, 0))

      Denna kommer att returnera hela raden med tranbär i den.

    3. Men eftersom allt du behöver är aktieinformation, kan du också ange numret på uppslagskolumnen: 3

      =INDEX(A1:C10, MATCH("Cranberry", C1:C10,0), 2)

    4. Voila!

    5. Du kan gå längre och avstå från den sista kolumnindikatorn ( 2 ). Du behöver den inte alls om du bara använder kolumnen för uppslag ( B1:B10 ) i stället för hela tabellen ( A1:C10 ) som det första argumentet:

      =INDEX(B1:B10, MATCH("Cranberry", C1:C10, 0))

      Tips: Ett bekvämare sätt att kontrollera tillgången på olika bär skulle vara att placera dem i en rullgardinslista ( E2 ) och hänvisar MATCH-funktionen till cellen med den listan:

      =INDEX(B1:B10, MATCH(E2, C1:C10, 0))

      När du väljer ett bär ändras det relaterade värdet i enlighet med detta:

    Varför INDEX MATCH i Google Sheets är bättre än VLOOKUP

    Du vet redan att Google Sheets INDEX MATCH söker upp ditt värde i en tabell och returnerar en annan relaterad post från samma rad. Och du vet att Google Sheets VLOOKUP gör exakt samma sak. Så varför bry sig?

    Saken är den, INDEX MATCH har några viktiga fördelar över VLOOKUP:

    1. Det är möjligt att söka på vänster sida. Jag bytte ut kolumnerna tidigare för att illustrera detta: INDEX MATCH-funktionen i Google Sheets kan och vill titta till vänster om sökkolumnen. VLOOKUP söker alltid i den allra första kolumnen i intervallet och letar efter träffar till höger om den - annars får den bara #N/A-fel:

    2. Inga röriga referenser när du lägger till nya kolumner och flyttar befintliga kolumner. Om du lägger till eller flyttar kolumner kommer INDEX MATCH att återspegla ändringarna automatiskt utan att blanda sig i resultatet. Eftersom du använder kolumnreferenser justeras de omedelbart av Google Sheets:

      Försök att göra detta med VLOOKUP: det kräver beställningsnumret snarare än cellreferenser för en uppslagskolumn. Du får alltså bara fel värde eftersom en annan kolumn tar samma plats - kolumn 2 i mitt exempel:

    3. Överväger textfall vid behov (mer om detta nedan).
    4. Kan användas för vertikal sökning baserad på flera kriterier.

    Jag uppmanar dig att titta närmare på de två sista punkterna nedan.

    Bokstavskänslig v-lookup med INDEX MATCH i Google Sheets

    INDEX MATCH är ett bra alternativ när det gäller skiftlägeskänslighet.

    Om vi antar att alla bär säljs på två sätt - i lösvikt (vägda vid disken) och förpackade i lådor - finns det två förekomster av varje bär som är skrivet i olika fall i listan, var och en med ett eget ID som också varierar i olika fall:

    Så hur kan du söka upp information om lagerinformation om ett bär som säljs på ett visst sätt? VLOOKUP returnerar det första namnet som hittas, oavsett vilket fall det är.

    Som tur är kan INDEX MATCH för Google Sheets göra det på rätt sätt. Du behöver bara använda ytterligare en funktion - FIND eller EXACT.

    Exempel 1. FIND för Vlookup som är känslig för stora bokstäver

    FIND är en funktion som tar hänsyn till stor- och småbokstäver i Google Sheets, vilket gör den utmärkt för vertikal sökning med hänsyn till stor- och småbokstäver:

    =ArrayFormula(INDEX(B2:B19, MATCH(1, FIND(E2, C2:C19)), 0))

    Låt oss se vad som händer i denna formel:

    1. FIND genomsöker kolumn C ( C2:C19 ) för rekordet från E2 ( körsbär ) med hänsyn till dess bokstavsform. När den har hittats "markerar" formeln cellen med ett nummer - 1 .
    2. MATCH söker efter detta märke - 1 - i samma kolumn ( C ) och lämnar numret på dess rad till INDEX.
    3. INDEX kommer ner till den raden i kolumn B ( B2:B19 ) och hämtar den önskade posten till dig.
    4. När du är klar med formeln trycker du på Ctrl+Shift+Enter för att lägga till ArrayFormula i början. Det krävs eftersom FIND utan det inte kan söka i arrays (i mer än en cell). Du kan också skriva ' ArrayFormula ' från tangentbordet.

    Exempel 2. EXACT för Vlookup som är känslig för stora bokstäver

    Om du ersätter FIND med EXACT kommer den senare att söka efter poster med exakt samma tecken, även med stor bokstavsbokstäver.

    Den enda skillnaden är att EXACT "markerar" en match med TRUE i stället för antal 1 Det första argumentet för MATCH bör därför vara TRUE :

    =ArrayFormula(INDEX(B2:B19, MATCH(TRUE, EXACT(E2, C2:C19), 0)))

    Google Sheets INDEX MATCH med flera kriterier

    Vad händer om det finns flera villkor som du vill hämta posten utifrån?

    Låt oss kontrollera priset på körsbär som säljs i PP-hinkar och är redan tar slut :

    Jag ordnade alla kriterier i rullgardinslistorna i kolumn F. Och det är Google Sheets INDEX MATCH som stöder flera kriterier, inte VLOOKUP. Här är formeln du behöver använda:

    =ArrayFormula(INDEX(B2:B24, MATCH(CONCATENATE(F2:F4), A2:A24&C2:C24&D2:D24, 0),))

    Ingen panik! :) Logiken är faktiskt ganska enkel:

    1. SAMMANFOGA(F2:F4) kombinerar alla tre poster från celler med kriterier till en sträng på följande sätt:

      CherryPP bucketRunning out

      Detta är en Sök_nyckel för MATCH, eller med andra ord vad du letar efter i tabellen.

    2. A2:A24&C2:C24&D2:D24 utgör en sortiment Eftersom alla tre kriterierna finns i tre separata kolumner kombinerar du dem på det här sättet:

      KörsbärKartongbricka i kartongLagret finns i lager

      CherryFilmförpackningSlut i lager

      CherryPP bucketRunning out

      osv.

    3. Det sista argumentet i MATCH - 0 - gör det möjligt att hitta en exakt matchning för CherryPP bucketRunning out bland alla dessa rader med kombinerade kolumner. Som du kan se är det på den tredje raden.
    4. Sedan gör INDEX sin sak: den hämtar posten från den tredje raden i kolumn B.
    5. ArrayFormula används för att andra funktioner ska kunna arbeta med matriser.

    Tips: Om formeln inte hittar någon matchning kommer den att ge ett fel. För att undvika det kan du linda in hela formeln i IFERROR (göra det till första argumentet) och skriva in vad du vill se i en cell i stället för fel som andra argument:

    =IFERROR(ArrayFormula(INDEX(B2:B27, MATCH(CONCATENATE(F2:F4), A2:A27&C2:C27&D2:D27, 0),)), "Ej funnen")

    Bättre alternativ till INDEX MATCH i Google Sheets - flera VLOOKUP-matchningar

    Oavsett vilken uppslagsfunktion du föredrar, VLOOKUP eller INDEX MATCH, finns det ett bättre alternativ till båda.

    Multiple VLOOKUP Matches är ett särskilt tillägg för Google Sheets som är utformat för att:

    • Lookup utan formler
    • sökning i alla riktningar
    • Sökning med hjälp av flera villkor för olika datatyper: text, siffror, datum, tid, osv.
    • hämta flera tändstickor, så många som du behöver (förutsatt att det finns lika många av dem i bordet, förstås).

    Gränssnittet är enkelt, så du behöver inte tvivla på att du gör allting rätt:

    1. Välj källområde.
    2. Ange antalet matchningar och kolumner som ska återges.
    3. Finjustera villkoren med hjälp av de fördefinierade operatörerna ( innehåller, =, inte tom , mellan , etc.).

    Du kommer också att kunna:

    • förhandsgranska resultatet
    • bestämma var den ska placeras
    • och hur: som en formel eller bara värden

    Missa inte den här möjligheten att testa tillägget. Installera det från Google Workspace Marketplace. På sidan med handledning förklaras alla alternativ i detalj.

    Vi har också förberett en särskild instruktionsvideo:

    Vi ses i kommentarerna nedan eller i nästa artikel ;)

    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.