Sisällysluettelo
Kun sinun on löydettävä arkistostasi tietoja, jotka vastaavat tiettyä avaintietoa, turvaudut yleensä Google Sheetsin VLOOKUPiin. Mutta siinäpä se: VLOOKUP lyö sinulle rajoituksia lähes välittömästi. Siksi sinun on parasta lisätä resursseja tehtävään opettelemalla INDEX MATCH.
INDEX MATCH Google Sheetsissä on yhdistelmä kahdesta funktiosta: INDEX ja MATCH. Kun niitä käytetään yhdessä, ne toimivat parempana vaihtoehtona Google Sheetsin VLOOKUP:lle. Tutustutaan niiden ominaisuuksiin yhdessä tässä blogikirjoituksessa. Mutta ensin haluan antaa sinulle lyhyen kierroksen niiden omista rooleista taulukkolaskentaohjelmissa.
Google Sheetsin MATCH-toiminto
Aloitan Google Sheetsin MATCH:lla, koska se on todella yksinkertainen. Se etsii datasta tietyn arvon ja palauttaa sen sijainnin:
=MATCH(search_key, range, [search_type])- search_key on etsimäsi levy. Tarvitaan.
- alue on joko rivi tai sarake, josta etsitään. Required.
Huomaa: MATCH hyväksyy vain yksiulotteisia matriiseja: joko rivin tai sarakkeen.
- search_type on valinnainen, ja se määrittää, pitääkö vastaavuuden olla tarkka vai likimääräinen. Jos se jätetään pois, se on oletusarvoisesti 1:
- 1 tarkoittaa, että alue lajitellaan nousevaan järjestykseen. Funktio hakee suurimman arvon, joka on pienempi tai yhtä suuri kuin sinun search_key .
- 0 saa funktion etsimään tarkkaa vastaavuutta, jos alueesi ei ole lajiteltu.
- -1 vihjaa, että tietueet asetetaan järjestykseen alenevaa lajittelua käyttäen. Tässä tapauksessa funktio saa pienimmän arvon, joka on suurempi tai yhtä suuri kuin sinun search_key .
Tässä on esimerkki: saadakseni tietyn marjan sijainnin kaikkien marjojen luettelossa tarvitsen seuraavan MATCH-kaavan Google Sheetsissä:
=MATCH("Mustikka", A1:A10, 0)
Google Sheets INDEX-toiminto
MATCH näyttää, mistä arvo on etsittävä (sen sijainti alueella), mutta Google Sheetsin INDEX-funktio hakee itse arvon rivin ja sarakkeen etäisyyksien perusteella:
=INDEX(viite, [rivi], [sarake])- viite on alue, jota on tarkasteltava. Tarvitaan.
- rivi on rivien lukumäärä, joka siirretään alueen ensimmäisestä solusta. Valinnainen, 0, jos jätetään pois.
- sarake , aivan kuten rivi , on offset-sarakkeiden lukumäärä. Myös valinnainen, myös 0, jos jätetään pois.
Jos määrität molemmat valinnaiset argumentit (rivi ja sarake), Google Sheets INDEX palauttaa tietueen kohdesolusta:
=INDEX(A1:C10, 7, 1)
Jos jätät yhden näistä argumenteista väliin, funktio antaa sinulle koko rivin tai sarakkeen vastaavasti:
=INDEX(A1:C10, 7)
INDEX MATCHin käyttö Google Sheetsissä - kaavaesimerkkejä
Kun INDEXiä ja MATCHia käytetään yhdessä laskentataulukoissa, ne ovat parhaimmillaan. Ne voivat ehdottomasti korvata Google Sheetsin VLOOKUPin ja hakea halutun tietueen taulukosta avainarvon perusteella.
Rakenna ensimmäinen INDEX MATCH -kaava Google Sheetsille
Oletetaan, että haluat saada karpalon varastotiedot samasta taulukosta, jota käytin edellä. Vaihdoin vain sarakkeet B ja C (miksi, selviää hieman myöhemmin).
- Nyt kaikki marjat on lueteltu sarakkeessa C. Google Sheetsin MATCH-toiminto auttaa sinua löytämään karpalon tarkan rivin: 8
=MATCH("Karpalo", C1:C10, 0)
- Laita koko MATCH-kaava rivi argumentti INDEX-funktiossa:
=INDEX(A1:C10, MATCH("Karpalo", C1:C10, 0))
Tämä palauttaa koko rivin, jossa on karpaloa.
- Mutta koska tarvitset vain varastotiedot, määritä myös hakusarakkeen numero: 3
=INDEX(A1:C10, MATCH("Karpalo", C1:C10,0), 2)
- Voila!
- Voit mennä pidemmälle ja luopua viimeisestä sarakeindikaattorista ( 2 Et tarvitse sitä lainkaan, jos käytät vain hakusaraketta ( B1:B10 ) eikä koko taulukkoa ( A1:C10 ) ensimmäisenä argumenttina:
=INDEX(B1:B10, MATCH("Karpalo", C1:C10, 0))
Vinkki. Kätevämpi tapa tarkistaa eri marjojen saatavuus olisi sijoittaa ne pudotusluetteloon ( E2 ) ja viittaat MATCH-funktiolla soluun, jossa on kyseinen luettelo:
=INDEX(B1:B10, MATCH(E2, C1:C10, 0))
Kun valitset marjan, siihen liittyvä arvo muuttuu vastaavasti:
Miksi INDEX MATCH Google Sheetsissä on parempi kuin VLOOKUP?
Tiedät jo, että Google Sheetsin INDEX MATCH etsii arvosi taulukosta ja palauttaa toisen liittyvän tietueen samalta riviltä. Tiedät myös, että Google Sheetsin VLOOKUP tekee täsmälleen saman. Miksi siis vaivautua?
Asia on niin, INDEX MATCH on joitakin merkittäviä etuja VLOOKUPin yli:
- Vasemmanpuoleinen haku on mahdollista Vaihdoin sarakkeiden paikkoja aiemmin havainnollistamaan tätä: Google Sheetsin INDEX MATCH -toiminto voi etsiä ja etsii hakusarakkeen vasemmalta puolelta. VLOOKUP etsii aina alueen ensimmäisestä sarakkeesta ja etsii osumia sen oikealta puolelta - muuten se saa vain #N/A-virheitä:
- Uusia sarakkeita lisättäessä ja olemassa olevia siirrettäessä ei ole sekavia viittauksia. Jos lisäät tai siirrät sarakkeita, INDEX MATCH vastaa muutoksiin automaattisesti puuttumatta tulokseen. Koska käytät sarakeviittauksia, Google Sheets mukauttaa ne välittömästi:
Yritä tehdä tämä VLOOKUP:lla: se vaatii tilausnumeron eikä soluviittauksia hakusarakkeelle. Näin ollen saat väärän arvon, koska toinen sarake ottaa saman paikan - sarake 2 esimerkissäni:
- Harkitsee tekstin tapausta tarvittaessa (tästä lisää jäljempänä).
- Voidaan käyttää useisiin kriteereihin perustuvaan vertikaaliseen hakuun.
Pyydän teitä tarkastelemaan kahta viimeistä kohtaa yksityiskohtaisesti jäljempänä.
Case-sensitiivinen v-lookup INDEX MATCHin avulla Google Sheetsissä
INDEX MATCH on hyvä valinta, kun on kyse isojen ja pienten kirjainten herkkyydestä.
Oletetaan, että kaikkia marjoja myydään kahdella tavalla - irtotavarana (tiskillä punnittuna) ja pakattuina laatikoihin. Näin ollen luettelossa on kaksi eri tapauksiin kirjoitettua marjaa, joilla kullakin on oma tunnuksensa, joka myös vaihtelee tapauksittain:
Miten voit siis etsiä tietyllä tavalla myydyn marjan varastotietoja? VLOOKUP palauttaa ensimmäisen löytämänsä nimen riippumatta sen tapauksesta.
Onneksi INDEX MATCH for Google Sheets voi tehdä sen oikein, ja sinun on käytettävä vain yhtä lisätoimintoa - FIND tai EXACT.
Esimerkki 1. FIND case-sensitiivistä Vlookupia varten
FIND on Google Sheetsissä case-sensitive-toiminto, joten se sopii erinomaisesti case-sensitive vertikaaliseen hakuun:
=ArrayFormula(INDEX(B2:B19, MATCH(1, FIND(E2, C2:C19)), 0)))
Katsotaan, mitä tässä kaavassa tapahtuu:
- FIND skannaa sarakkeen C ( C2:C19 ) kirjaa varten osoitteesta E2 ( kirsikka ) ottaen huomioon sen kirjainkirjaimet. Kun se on löydetty, kaava "merkitsee" kyseisen solun numerolla - - 1 .
- MATCH etsii tätä merkkiä - 1 - samassa sarakkeessa ( C ) ja antaa rivin numeron INDEXille.
- INDEX tulee kyseiselle riville sarakkeessa B ( B2:B19 ) ja hakee sinulle tarvittavan tietueen.
- Kun olet saanut kaavan valmiiksi, paina Ctrl+Shift+Enter lisätäksesi ArrayFormula-kaavan alkuun. Se on välttämätön, koska ilman sitä FIND ei pysty hakemaan matriiseista (useammasta kuin yhdestä solusta). Tai voit kirjoittaa ' ArrayFormula ' näppäimistöltä.
Esimerkki 2. EXACT case-sensitiivistä Vlookupia varten
Jos korvaat FIND:n EXACT:lla, jälkimmäinen etsii tietueet, joissa on täsmälleen samat merkit, mukaan lukien niiden tekstin iskut.
Ainoa ero on se, että EXACT "merkitsee" ottelun, jossa on TRUE numeron sijasta 1 Näin ollen MATCHin ensimmäisen argumentin pitäisi olla seuraava. TRUE :
=ArrayFormula(INDEX(B2:B19, MATCH(TRUE, EXACT(E2, C2:C19), 0))))
Google Sheets INDEX MATCH useilla kriteereillä
Entä jos on useita ehtoja, joiden perusteella haluat hakea tietueen?
Tarkistetaanpa hinta kirsikka jota myydään PP-ämpärit ja on jo loppumassa :
Järjestin kaikki kriteerit pudotusluetteloihin sarakkeessa F. Ja Google Sheetsin INDEX MATCH tukee useita kriteerejä, ei VLOOKUP. Tässä on kaava, jota sinun on käytettävä:
=ArrayFormula(INDEX(B2:B24, MATCH(CONCATENATE(F2:F4), A2:A24&C2:C24&D2:D24, 0),)))
Älä hätäänny! :) Sen logiikka on itse asiassa melko yksinkertainen:
- CONCATENATE(F2:F4) yhdistää kaikki kolme tietuetta soluista, joissa on kriteerit, yhdeksi merkkijonoksi näin:
CherryPP ämpäriLoppuu
Tämä on search_key for MATCH, tai toisin sanoen, mitä etsit taulukosta.
- A2:A24&C2:C24&D2:D24 muodostavat alue Koska kaikki kolme kriteeriä ovat kolmessa eri sarakkeessa, ne tavallaan yhdistetään:
KirsikkaKartonkitarjotinVarastossa
CherryFilm-pakkausEi varastossa
CherryPP ämpäriLoppuu
jne.
- Viimeinen argumentti MATCH - 0 - mahdollistaa täsmällisen vastineen löytämisen CherryPP ämpäriLoppuu Kuten näet, se on kolmannella rivillä.
- Sitten INDEX tekee tehtävänsä: se hakee tietueen sarakkeen B kolmannelta riviltä.
- ArrayFormulaa käytetään, jotta muut funktiot voivat työskennellä matriisien kanssa.
Vihje. Jos kaava ei löydä vastaavuutta, se palauttaa virheen. Voit välttää sen kietomalla koko kaavan muotoon IFERROR (tee siitä ensimmäinen argumentti) ja kirjoittamalla toisena argumenttina sen, mitä haluat nähdä solussa virheiden sijasta:
=IFERROR(ArrayFormula(INDEX(B2:B27, MATCH(CONCATENATE(F2:F4), A2:A27&C2:C27&D2:D27, 0),))), "Ei löydy")
Parempi vaihtoehto INDEX MATCHille Google Sheetsissä - Useita VLOOKUP-otteluita varten
Mitä tahansa hakutoimintoa haluatkin, VLOOKUPia tai INDEX MATCHia, on olemassa parempi vaihtoehto molemmille.
Multiple VLOOKUP Matches on erityinen lisäosa Google Sheetsille, jonka tarkoituksena on:
- haku ilman kaavoja
- haku kaikkiin suuntiin
- haku useilla ehdoilla eri tietotyypeille: teksti, numerot, päivämäärät, aika, jne.
- hae useita otteluita, niin monta kuin tarvitset (edellyttäen tietysti, että niitä on taulukossa yhtä monta).
Käyttöliittymä on yksinkertainen, joten sinun ei tarvitse epäillä, teetkö kaiken oikein:
- Valitse lähdealue.
- Määritä palautettavien osumien ja sarakkeiden määrä.
- Hienosäädä ehtoja käyttämällä ennalta määritettyjä operaattoreita ( sisältää, =, ei tyhjä , välillä jne.).
Pystyt myös:
- tuloksen esikatselu
- päättää, mihin se sijoitetaan
- ja miten: kaavana tai pelkkinä arvoina
Älä missaa tätä tilaisuutta tarkistaa lisäosa. Asenna se Google Workspace Marketplace -palvelusta. Sen ohjesivu selittää jokaisen vaihtoehdon yksityiskohtaisesti.
Valmistimme myös erityisen opetusvideon:
Nähdään alla olevissa kommenteissa tai seuraavassa artikkelissa ;)