INDEX MATCH MATCH Excelissä kaksiulotteista hakua varten

  • Jaa Tämä
Michael Brown

Ohjeessa esitellään muutamia erilaisia kaavoja, joilla Excelissä voidaan tehdä kaksiulotteisia hakuja. Katso vaihtoehtoja läpi ja valitse suosikkisi :)

Kun etsit jotain Excel-taulukoista, useimmiten etsit ylöspäin sarakkeissa tai vaakasuunnassa riveissä. Joskus sinun on kuitenkin etsittävä sekä rivejä että sarakkeita. Toisin sanoen, pyrit löytämään arvon tietyn rivin ja sarakkeen leikkauspisteestä. Tätä kutsutaan nimellä matriisin haku (alias 2-ulotteinen tai 2-suuntainen haku ), ja tämä opetusohjelma näyttää, miten se tehdään neljällä eri tavalla.

    Excel INDEX MATCH MATCH-kaava

    Suosituin tapa tehdä kaksisuuntainen haku Excelissä on käyttää INDEX MATCH MATCH -kaavaa. Tämä on muunnelma klassisesta INDEX MATCH -kaavasta, johon lisätään vielä yksi MATCH-funktio, jotta saadaan sekä rivin että sarakkeen numerot:

    INDEX ( data_array , MATCH ( vlookup_value , lookup_column_range , 0), MATCH ( hlookup-arvo , lookup_row_range , 0))

    Tehdään esimerkiksi kaava, jonka avulla alla olevasta taulukosta voidaan vetää tietyn eläimen populaatio tiettynä vuonna. Aluksi määritellään kaikki argumentit:

    • Data_array - B2:E4 (tietosolut, lukuun ottamatta rivien ja sarakkeiden otsikoita)
    • Vlookup_value - H1 (kohde-eläin)
    • Lookup_column_range - A2:A4 (rivien otsikot: eläinten nimet) - A3:A4
    • Hlookup_value - H2 (tavoitevuosi)
    • Lookup_row_range - B1:E1 (sarakeotsikot: vuodet)

    Kun yhdistät kaikki argumentit, saat tämän kaavan kaksisuuntaista hakua varten:

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

    Miten tämä kaava toimii

    Vaikka kaava saattaa ensisilmäyksellä näyttää hieman monimutkaiselta, sen logiikka on todella suoraviivainen ja helppo ymmärtää. INDEX-funktio hakee datamassasta arvon rivin ja sarakkeen numeroiden perusteella, ja kaksi MATCH-funktiota syöttää nämä numerot:

    INDEX(B2:E4, rivin_luku, sarakkeen_luku)

    Tässä hyödynnämme MATCH(lookup_value, lookup_array, [match_type]):n kykyä palauttaa suhteellinen asema of lookup_value osoitteessa lookup_array .

    Rivinumeron saamiseksi etsitään kiinnostava eläin (H1) rivien otsikoista (A2:A4):

    MATCH(H1, A2:A4, 0)

    Sarakkeen numeron saamiseksi etsitään kohdevuosi (H2) sarakkeiden otsikoista (B1:E1):

    MATCH(H2, B1:E1, 0)

    Molemmissa tapauksissa etsimme tarkkaa vastaavuutta asettamalla kolmannen argumentin arvoksi 0.

    Tässä esimerkissä ensimmäinen MATCH palauttaa 2, koska vlookup-arvomme (jääkarhu) löytyy A3:sta, joka on A2:A4:n toinen solu. Toinen MATCH palauttaa 3, koska hlookup-arvo (2000) löytyy D1:stä, joka on B1:E1:n kolmas solu.

    Edellä esitetyn perusteella kaava on:

    INDEX(B2:E4, 2, 3)

    Palauta arvo tietomäärän B2:E4 toisen rivin ja kolmannen sarakkeen leikkauspisteessä, joka on arvo solussa D3.

    VLOOKUP- ja MATCH-kaava 2-suuntaista hakua varten

    Toinen tapa tehdä kaksiulotteinen haku Excelissä on käyttää VLOOKUP- ja MATCH-funktioiden yhdistelmää:

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

    Esimerkkitaulukkomme kaava on seuraavanlainen:

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

    Missä:

    • Table_array - A2:E4 (datasolut, mukaan lukien rivien otsikot)
    • Vlookup_value - H1 (kohde-eläin)
    • Hlookup_value - H2 (tavoitevuosi)
    • Lookup_row_range - A1:E1 (sarakeotsikot: vuodet)

    Miten tämä kaava toimii

    Kaavan ydin on VLOOKUP-funktio, joka on määritetty tarkkaa vastaavuutta varten (viimeisen argumentin arvoksi on asetettu FALSE), joka etsii hakuarvoa (H1) taulukkosarjan ensimmäisestä sarakkeesta (A2:E4) ja palauttaa arvon saman rivin toisesta sarakkeesta. Määrittääksesi, mistä sarakkeesta arvo palautetaan, käytät MATCH-funktiota, joka on myös määritetty tarkkaa vastaavuutta varten (viimeisen argumentin arvoksi on asetettu 0):

    MATCH(H2, A1:E1, 0)

    MATCH hakee arvoa H2:sta sarakeotsikoiden (A1:E1) kautta ja palauttaa löydetyn solun suhteellisen sijainnin. Tapauksessamme kohdevuosi (2010) löytyy E1:stä, joka on hakumassan viides. Numero 5 menee siis kohtaan col_index_num VLOOKUPin argumentti:

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

    VLOOKUP ottaa sen sieltä, etsii tarkan vastaavuuden sen hakuarvolle A2:ssa ja palauttaa arvon saman rivin viidennestä sarakkeesta, joka on solu E2.

    Tärkeä huomautus! Jotta kaava toimisi oikein, table_array (A2:E4) ja VLOOKUP ja lookup_array MATCH:n (A1:E1) sarakkeiden lukumäärän on oltava sama, muuten MATCH:n välittämien sarakkeiden lukumäärän tulee olla sama kuin col_index_num on virheellinen (ei vastaa sarakkeen sijaintia sarakkeessa table_array ).

    XLOOKUP-toiminto rivejä ja sarakkeita varten

    Microsoft on hiljattain ottanut Excelissä käyttöön yhden uuden toiminnon, jonka on tarkoitus korvata kaikki nykyiset hakutoiminnot, kuten VLOOKUP, HLOOKUP ja INDEX MATCH. XLOOKUP voi muun muassa tarkastella tietyn rivin ja sarakkeen leikkauspistettä:

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

    Esimerkkiaineistomme osalta kaava on seuraava:

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

    Huomautus: XLOOKUP on tällä hetkellä beta-toiminto, joka on saatavilla vain Office 365 -tilaajille, jotka kuuluvat Office Insiders -ohjelmaan.

    Miten tämä kaava toimii

    Kaavassa käytetään XLOOKUPin kykyä palauttaa kokonainen rivi tai sarake. Sisempi funktio etsii otsikkoriviltä kohdevuoden ja palauttaa kaikki kyseisen vuoden arvot (tässä esimerkissä vuoden 1980). Nämä arvot menevät sarakkeeseen return_array ulomman XLOOKUPin argumentti:

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

    Ulompi XLOOKUP-funktio etsii kohde-eläintä sarakeotsikoiden kautta ja palauttaa samassa kohdassa olevan arvon return_array:sta.

    SUMPRODUCT-kaava kaksisuuntaista hakua varten

    SUMPRODUCT-funktio on kuin sveitsiläinen veitsi Excelissä - se voi tehdä niin monia asioita, jotka ylittävät sen käyttötarkoituksen, etenkin kun on kyse useiden kriteerien arvioinnista.

    Jos haluat etsiä kahta kriteeriä riveillä ja sarakkeissa, käytä tätä yleistä kaavaa:

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

    Kaksisuuntaisen haun suorittamiseksi tietokannassamme kaava on seuraava:

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

    Alla oleva syntaksi toimii myös:

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

    Miten tämä kaava toimii

    Kaavan ytimessä verrataan kahta hakuarvoa rivin ja sarakkeen otsikoihin (H1:ssä olevaa kohde-eläintä verrataan kaikkiin eläinten nimiin kohdissa A2:A4 ja H2:ssä olevaa tavoitevuotta kaikkiin vuosiin kohdissa B1:E1):

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

    Tuloksena on kaksi TRUE- ja FALSE-arvojen matriisia, joissa TRUE-arvot edustavat osumia:

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

    Kertolaskuoperaatio muuttaa TRUE- ja FALSE-arvot 1:ksi ja 0:ksi ja tuottaa kaksiulotteisen, 4 sarakkeesta ja 3 rivistä koostuvan matriisin (rivit erotetaan toisistaan puolipisteillä ja kukin sarake pilkulla):

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

    SUMPRODUCT-funktioilla kerrotaan edellä olevan matriisin elementit samoissa paikoissa olevilla B2:E4-alkioilla:

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

    Ja koska nollalla kertominen antaa nollan, vain ensimmäisen joukon 1:tä vastaava kohde jää jäljelle:

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

    Lopuksi SUMPRODUCT laskee tuloksena saadun matriisin elementit yhteen ja palauttaa arvon 2000.

    Huomautus: Jos taulukossasi on useampi kuin yksi rivi ja/tai sarakeotsikko, joilla on sama nimi, lopullinen matriisi sisältää useamman kuin yhden numeron kuin nolla, ja kaikki nämä numerot lasketaan yhteen. Tuloksena saat summan arvoista, jotka täyttävät molemmat kriteerit. Tämä erottaa SUMPRODUCT-kaavan INDEX MATCH MATCH- ja VLOOKUP-kaavoista, jotka palauttavat ensimmäisenä löydetyn osuman.

    Matriisin haku nimetyillä alueilla (explicit Intersection)

    Vielä yksi hämmästyttävän yksinkertainen tapa tehdä matriisihaku Excelissä on käyttää nimettyjä alueita. Näin:

    Osa 1: Nimeä sarakkeet ja rivit

    Nopein tapa nimetä taulukon jokainen rivi ja sarake on tämä:

    1. Valitse koko taulukko (tässä tapauksessa A1:E4).
    2. On Kaavat välilehdellä, kohdassa Määritellyt nimet ryhmää, klikkaa Luo valinnasta tai paina pikanäppäintä Ctrl + Shift + F3.
    3. Vuonna Luo nimiä valinnasta valintaikkunassa, valitse Ylin rivi ja Vasen sarake, ja napsauta OK.

    Tämä luo automaattisesti nimet rivien ja sarakkeiden otsikoiden perusteella. Tähän liittyy kuitenkin pari varoitusta:

    • Jos sarakkeiden ja/tai rivien otsikot ovat numeroita tai sisältävät tiettyjä merkkejä, jotka eivät ole sallittuja Excel-nimissä, tällaisten sarakkeiden ja rivien nimiä ei luoda. Voit tarkastella luetteloa luoduista nimistä avaamalla Nimenhallinta ( Ctrl + F3 ). Jos joitakin nimiä puuttuu, määritä ne manuaalisesti, kuten selitetään kohdassa Alueen nimeäminen Excelissä.
    • Jos jotkin rivien tai sarakkeiden otsikoista sisältävät välilyöntejä, välilyönnit korvataan esimerkiksi alleviivauksilla, Polar_bear .

    Esimerkkitaulukossamme Excel loi automaattisesti vain rivien nimet. Sarakkeiden nimet on luotava manuaalisesti, koska sarakkeiden otsikot ovat numeroita. Tämän voit ratkaista yksinkertaisesti lisäämällä numeroiden eteen alleviivauksia, kuten esimerkiksi seuraavasti _1990 .

    Tuloksena on seuraavat nimetyt alueet:

    Osa 2: Tee matriisin hakukaava

    Jos haluat vetää arvon tietyn rivin ja sarakkeen leikkauspisteestä, kirjoita tyhjään soluun jokin seuraavista yleisistä kaavoista:

    = row_name column_name

    Tai päinvastoin:

    = column_name row_name

    Esimerkiksi sinivalaiden populaation saamiseksi vuonna 1990 kaava on yksinkertainen:

    =Blue_whale _1990

    Jos joku tarvitsee yksityiskohtaisempia ohjeita, seuraavat vaiheet opastavat sinua prosessin läpi:

    1. Kirjoita yhtäläisyysmerkki (=) soluun, jossa haluat tuloksen näkyvän.
    2. Aloita kohderivin nimen kirjoittaminen, esimerkiksi, Blue_whale Kun olet kirjoittanut pari merkkiä, Excel näyttää kaikki olemassa olevat nimet, jotka vastaavat syöttämääsi nimeä. Kaksoisnapsauta haluamaasi nimeä syöttääksesi sen kaavaan:
    3. Kirjoita rivin nimen jälkeen avaruus , joka toimii leikkausoperaattori tässä tapauksessa.
    4. Kirjoita kohdesarakkeen nimi ( _1990 meidän tapauksessamme).
    5. Kun sekä rivin että sarakkeen nimi on syötetty, Excel korostaa taulukon vastaavan rivin ja sarakkeen, ja kaava saadaan valmiiksi painamalla Enter-näppäintä:

    Matriisin haku on valmis, ja alla oleva kuvakaappaus näyttää tuloksen:

    Näin etsitään Excelin riveistä ja sarakkeista. Kiitän sinua lukemisesta ja toivon, että tapaamme blogissamme ensi viikolla!

    Saatavilla olevat lataukset

    2-dimensionaalinen haku esimerkkityökirja

    Michael Brown on omistautunut teknologian harrastaja, jolla on intohimo yksinkertaistaa monimutkaisia ​​prosesseja ohjelmistotyökalujen avulla. Yli vuosikymmenen kokemuksella teknologia-alalta hän on hionut taitojaan Microsoft Excelissä ja Outlookissa sekä Google Sheetsissä ja Docsissa. Michaelin blogi on omistettu jakamaan tietojaan ja asiantuntemustaan ​​muiden kanssa, ja se tarjoaa helposti seurattavia vinkkejä ja opetusohjelmia tuottavuuden ja tehokkuuden parantamiseksi. Olitpa kokenut ammattilainen tai aloittelija, Michaelin blogi tarjoaa arvokkaita oivalluksia ja käytännön neuvoja, joiden avulla saat kaiken irti näistä tärkeistä ohjelmistotyökaluista.