Excel INDEX MATCH vs. VLOOKUP - valemite näited

  • Jaga Seda
Michael Brown

See õpetus näitab, kuidas kasutada INDEXi ja MATCHi Excelis ja kuidas see on parem kui VLOOKUP.

Paaris hiljutises artiklis tegime tublisti tööd, et selgitada algajatele VLOOKUP-funktsiooni põhitõdesid ja pakkuda keerulisemaid VLOOKUP-valemi näiteid võimekatele kasutajatele. Ja nüüd püüan kui mitte rääkida teid VLOOKUP-i kasutamisest maha, siis vähemalt näidata teile alternatiivset viisi, kuidas Excelis vertikaalset otsingut teha.

"Milleks mul seda vaja on?" võite küsida. Sest VLOOKUPil on mitmeid piiranguid, mis võivad paljudes olukordades takistada soovitud tulemuse saamist. Teisest küljest on INDEX MATCH kombinatsioon paindlikum ja sellel on palju vingeid funktsioone, mis teevad selle VLOOKUPist mitmes mõttes paremaks.

    Exceli INDEX ja MATCH funktsioonid - põhitõed

    Kuna selle õpetuse eesmärk on näidata alternatiivset viisi vlookup'i tegemiseks Excelis, kasutades INDEX- ja MATCH-funktsioonide kombinatsiooni, siis ei peatu me palju nende süntaksil ja kasutusaladel. Me käsitleme ainult minimaalselt vajalikku, et mõista üldist ideed, ja seejärel vaatame põhjalikult valemite näiteid, mis näitavad kõiki eeliseid, mida INDEX MATCH kasutamine VLOOKUP'i asemel annab.

    INDEX funktsioon - süntaks ja kasutamine

    Exceli funktsioon INDEX tagastab väärtuse massiivi, mis põhineb teie poolt määratud rea ja veeru numbritel. Funktsiooni INDEX süntaks on lihtne:

    INDEX(array, row_num, [column_num])

    Siin on iga parameetri väga lihtne selgitus:

    • massiivi - rakkude vahemik, mille väärtust soovite tagastada.
    • row_num - massiivi rea number, millest soovite väärtuse tagastada. Kui see jäetakse välja, on nõutav veeru_num.
    • column_num - veeru number massiivis, millest soovite väärtuse tagastada. Kui see jäetakse välja, on row_num nõutav.

    Lisateavet leiate Exceli funktsioonist INDEX.

    Ja siin on näide INDEXi valemi lihtsaimast vormist:

    =INDEX(A1:C10,2,3)

    Valem otsib lahtrites A1 kuni C10 ja tagastab 2. rea ja 3. veeru lahtri väärtuse, st lahtri C2.

    Väga lihtne, eks ole? Kuid kui töötate reaalsete andmetega, siis vaevalt, et te kunagi teate, millist rida ja veergu te soovite, siinkohal tulebki appi funktsioon MATCH.

    MATCH funktsioon - süntaks ja kasutamine

    Exceli funktsioon MATCH otsib otsinguväärtust lahtrite vahemikus ja tagastab selle suhteline positsioon selle väärtuse vahemikus.

    Funktsiooni MATCH süntaks on järgmine:

    MATCH(lookup_value, lookup_array, [match_type])
    • lookup_value - otsitav number või tekstiväärtus.
    • lookup_array - otsitavate rakkude vahemik.
    • match_type - määrab, kas tagastada täpne vaste või lähim vaste:
      • 1 või jäetakse välja - leiab suurima väärtuse, mis on väiksem või võrdne otsinguväärtusega. Nõuab otsingumassiivi sorteerimist kasvavas järjekorras.
      • 0 - leiab esimese väärtuse, mis on täpselt võrdne otsinguväärtusega. INDEX / MATCH-kombinatsioonis on peaaegu alati vaja täpset vastet, seega seate MATCH-funktsiooni kolmandaks argumendiks 0.
      • -1 - leiab väikseima väärtuse, mis on suurem või võrdne lookup_value'ga. Nõuab lookup-massiivi sorteerimist kahanevas järjekorras.

    Näiteks kui vahemik B1:B3 sisaldab väärtusi "New-York", "Pariis", "London", siis annab alltoodud valem tagasi arvu 3, sest "London" on vahemiku kolmas kirje:

    =MATCH("London",B1:B3,0)

    Lisateavet leiate Exceli funktsioonist MATCH.

    Esmapilgul võib MATCH-funktsiooni kasulikkus tunduda küsitav. Keda huvitab väärtuse asukoht vahemikus? Me tahame teada väärtust ennast.

    Tuletan teile meelde, et otsinguväärtuse suhteline asukoht (st rea ja veeru numbrid) on täpselt see, mida te peate andma funktsioonile row_num ja column_num INDEX-funktsiooni argumendid. Nagu mäletate, suudab Excel INDEX leida väärtuse antud rea ja veeru kokkupuutepunktis, kuid ta ei saa kindlaks teha, millist täpselt rida ja veergu soovite.

    Kuidas kasutada INDEX MATCH funktsiooni Excelis

    Nüüd, kui te teate põhitõdesid, usun, et on juba hakanud selgeks saama, kuidas MATCH ja INDEX koos töötavad. Lühidalt öeldes leiab INDEX otsinguväärtuse veergude ja ridade numbrite järgi ja MATCH annab need numbrid. See on kõik!

    Vertikaalse otsingu puhul kasutate funktsiooni MATCH ainult rea numbri määramiseks ja annate veergude vahemiku otse INDEXile:

    INDEX ( veerg, et tagastada väärtus , MATCH ( otsinguväärtus , veerg, mille vastu vaadata , 0))

    Kas teil on ikka veel raskusi selle mõistmisega? Võib-olla on lihtsam aru saada ühe näite põhjal. Oletame, et teil on nimekiri riikide pealinnadest ja nende rahvaarvust:

    Teatava pealinna, näiteks Jaapani pealinna rahvaarvu leidmiseks kasutage järgmist valemit INDEX MATCH:

    =INDEX(C2:C10, MATCH("Jaapan", A2:A10, 0))

    Analüüsime nüüd, mida selle valemi iga komponent tegelikult teeb:

    • Funktsioon MATCH otsib otsinguväärtust "Jaapan" vahemikus A2:A10 ja tagastab numbri 3, sest "Jaapan" on otsingumassiivi kolmas.
    • Rea number läheb otse row_num INDEXi argument, mis annab talle korralduse tagastada selle rea väärtus.

    Seega muutub ülaltoodud valem lihtsaks INDEX(C2:C,3), mis ütleb, et otsime lahtrites C2 kuni C10 ja tõmbame väärtuse selle vahemiku kolmandast lahtrist, st C4-st, sest me alustame lugemist teisest reast.

    Kas te ei taha linna valemisse kõvasti sisse kodeerida? Sisestage see mõnda lahtrisse, näiteks F1, sisestage lahtriviide MATCH-i ja saate dünaamilise otsinguvalemi:

    =INDEX(C2:C10, MATCH(F1,A2:A10,0))

    Oluline märkus! Ridade arv massiivi INDEXi argument peaks vastama ridade arvule andmebaasis lookup_array argument MATCH, vastasel juhul annab valem vale tulemuse.

    Oodake, oodake... miks me ei kasuta lihtsalt järgmist Vlookup valemit? Mis mõte on raisata aega Exceli MATCH INDEXi salapäraste keerdkäikude väljaselgitamiseks?

    =VLOOKUP(F1, A2:C10, 3, FALSE)

    Sellisel juhul ei ole üldse mõtet :) See lihtne näide on ainult demonstratsiooniks, et sa saaksid aimu, kuidas INDEX ja MATCH funktsioonid koos töötavad. Teised näited, mis järgnevad allpool, näitavad sulle selle kombinatsiooni tegelikku võimsust, mis saab hõlpsasti hakkama paljude keeruliste stsenaariumidega, kui VLOOKUP komistab.

    Näpunäited:

    • Excel 365-s ja Excel 2021-s saate kasutada moodsamat valemit INDEX XMATCH.
    • Google Sheetsi jaoks vt selle artikli valemi näiteid INDEX MATCHiga.

    INDEX MATCH vs. VLOOKUP

    Kui otsustatakse, millist funktsiooni kasutada vertikaalsete otsingute tegemiseks, on enamik Exceli gurusid nõus, et INDEX MATCH on palju parem kui VLOOKUP. Siiski jäävad paljud inimesed ikkagi VLOOKUPi juurde, esiteks seetõttu, et see on lihtsam ja teiseks seetõttu, et nad ei mõista täielikult kõiki INDEX MATCHi valemi kasutamise eeliseid Excelis. Ilma sellise arusaamata ei ole keegi nõus investeerima oma aega, et õppida keerulisematsüntaks.

    Järgnevalt toon välja MATCH INDEXi peamised eelised VLOOKUPi ees ja te otsustate, kas see on teie Exceli arsenali väärt täiendus.

    4 peamist põhjust, miks kasutada VLOOKUPi asemel INDEX MATCHi

    1. Otsing paremalt vasakule. Nagu iga haritud kasutaja teab, ei saa VLOOKUP vaadata vasakule, mis tähendab, et teie otsinguväärtus peaks alati asuma tabeli kõige vasakpoolsemas veerus. INDEX MATCH saab hõlpsasti teha vasakule otsingut! Järgnev näide näitab seda praktikas: Kuidas Vlookup väärtus vasakule Excelis.
    2. Sisestage või kustutage veerge ohutult. VLOOKUP-valemid lähevad katki või annavad ebaõigeid tulemusi, kui tabelist kustutatakse või lisatakse uus veerg, sest VLOOKUP-i süntaks nõuab selle veeru indeksi numbri määramist, millest soovite andmeid tõmmata. Loomulikult muutub indeksinumber, kui lisate või kustutate veerge.

      INDEX MATCHi abil määrate tagastatava veeru vahemiku, mitte indeksi numbri. Selle tulemusena saate vabalt lisada ja eemaldada nii palju veerge kui soovite, muretsemata iga seotud valemi uuendamise pärast.

    3. Otsinguväärtuse suuruse piirangut ei ole. Kui kasutate funktsiooni VLOOKUP, ei tohi teie otsingukriteeriumide kogupikkus ületada 255 tähemärki, vastasel juhul tekib viga #VALUE! Seega, kui teie andmekogum sisaldab pikki stringisid, on INDEX MATCH ainus toimiv lahendus.
    4. Suurem töötlemiskiirus. Kui teie tabelid on suhteliselt väikesed, ei ole Exceli jõudluses peaaegu mingit olulist erinevust. Kui aga teie töölehed sisaldavad sadu või tuhandeid ridu ja järelikult sadu või tuhandeid valemeid, töötab MATCH INDEX palju kiiremini kui VLOOKUP, sest Excel peab töötlema ainult otsingu- ja tagastussammasteid, mitte kogu tabeli massiivi.

      VLOOKUPi mõju Exceli jõudlusele võib olla eriti märgatav, kui teie töövihik sisaldab keerulisi massiivi valemeid, nagu VLOOKUP ja SUM. Asi on selles, et iga massiivi väärtuse kontrollimine nõuab eraldi VLOOKUP-funktsiooni väljakutsumist. Seega, mida rohkem väärtusi teie massiivi sisaldab ja mida rohkem massiivi valemeid on töövihikus, seda aeglasem on Exceli jõudlus.

    Excel INDEX MATCH - valemi näited

    Teades, miks on vaja õppida funktsiooni MATCH INDEX, jõuame nüüd kõige huvitavama osa juurde ja vaatame, kuidas saab teoreetilisi teadmisi praktikas rakendada.

    INDEX MATCH valem, et vaadata ülespoole paremalt vasakule

    Nagu juba mainitud, ei saa VLOOKUP vaadata vasakule. Seega, kui teie otsinguväärtused ei ole kõige vasakpoolsem veerg, ei ole mingit võimalust, et Vlookup-valem toob teile soovitud tulemuse. Exceli funktsioon INDEX MATCH on mitmekülgsem ja ei hooli tegelikult sellest, kus otsingu- ja tagastussambad asuvad.

    Selle näite puhul lisame meie näidistabelisse vasakule veeru "Koht" ja püüame välja selgitada, kuidas Venemaa pealinn Moskva paikneb rahvaarvu poolest.

    Kasutades otsinguväärtust G1, kasutage järgmist valemit, et otsida C2:C10 ja tagastada vastav väärtus A2:A10:

    =INDEX(A2:A10,MATCH(G1,C2:C10,0))

    Vihje. Kui kavatsete kasutada oma INDEX MATCH valemit rohkem kui ühe lahtri jaoks, lukustage kindlasti mõlemad vahemikud absoluutsete lahtriviidetega (näiteks $A$2:$A$10 ja $C$2:4C$10), et need ei moonutaks valemit kopeerides.

    INDEX MATCH MATCH ridade ja veergude otsimiseks

    Ülaltoodud näidetes kasutasime klassikalise VLOOKUP-i asendajana INDEX MATCH-i, et tagastada väärtus etteantud ühe veeru vahemikust. Aga mis siis, kui teil on vaja otsida mitmes reas ja veerus? Teisisõnu, mis siis, kui soovite teostada nn. maatriks või kahesuunaline otsing?

    See võib tunduda keeruline, kuid valem on väga sarnane Exceli põhifunktsiooniga INDEX MATCH, ainult ühe erinevusega. Arutage, mis?

    Kasutage lihtsalt kahte MATCH-funktsiooni - ühte, et saada rea number ja teist, et saada veeru number. Ja ma õnnitlen neid, kes on õigesti ära arvanud :)

    INDEX (array, MATCH ( vlookup väärtus , veerg, mille vastu vaadata , 0), MATCH ( hlookup väärtus , rida, mille vastu vaadata , 0))

    Ja nüüd palun vaadake allolevat tabelit ja koostame INDEX MATCH MATCH valemi, et leida antud riigi rahvaarv (miljonites) antud aastal.

    Kui sihtriik on G1 (vlookup-väärtus) ja sihtaasta G2 (hlookup-väärtus), võtab valem sellise kuju:

    =INDEX(B2:D11, MATCH(G1,A2:A11,0), MATCH(G2,B1:D1,0))

    Kuidas see valem töötab

    Kui teil on vaja mõista keerulist Exceli valemit, jagage see väiksemateks osadeks ja vaadake, mida iga üksik funktsioon teeb:

    MATCH(G1,A2:A11,0) - otsib A2:A11 lahtris G1 ("Hiina") olevat väärtust ja tagastab selle positsiooni, mis on 2.

    MATCH(G2,B1:D1,0)) - otsib läbi B1:D1, et saada lahtris G2 ("2015") oleva väärtuse positsioon, mis on 3.

    Ülaltoodud rea ja veeru numbrid vastavad INDEX-funktsiooni argumentidele:

    INDEX(B2:D11, 2, 3)

    Tulemusena saate väärtuse vahemiku B2:D11 2. rea ja 3. veeru ristumiskohas, mis on väärtus lahtris D3. Lihtne? Jah!

    Excel INDEX MATCH mitme kriteeriumi otsimiseks

    Kui teil oli võimalus lugeda meie Exceli VLOOKUPi õpetust, siis olete tõenäoliselt juba katsetanud mitme kriteeriumiga Vlookupi valemit. Selle lähenemisviisi oluline piirang on aga vajadus lisada abisammas. Hea uudis on see, et Exceli funktsioon INDEX MATCH saab vaadata ka kahe või enama kriteeriumiga, ilma lähteandmeid muutmata või ümber struktureerimata!

    Siin on üldine INDEX MATCH valem mitme kriteeriumiga:

    {=INDEX( return_range , MATCH(1, ( kriteeriumid1 = vahemik1 ) * ( kriteeriumid2 = vahemik2 ), 0))}

    Märkus. See on massiivi valem, mis tuleb täita Ctrl + Shift + Enter kiirklahvi abil.

    Oletame, et alljärgnevas näidistabelis soovite leida summa, mis põhineb 2 kriteeriumil, Klient ja Toode .

    Järgmine INDEX MATCH valem töötab suurepäraselt:

    =INDEX(C2:C10, MATCH(1, (F1=A2:A10) * (F2=B2:B10), 0))

    Kus C2:C10 on vahemik, millest väärtus tagastatakse, F1 on kriteerium1, A2:A10 on vahemik, mida võrreldakse kriteeriumiga1, F2 on kriteerium 2 ja B2:B10 on vahemik, mida võrreldakse kriteeriumiga2.

    Ärge unustage, et sisestada valem õigesti, vajutades Ctrl + Shift + Enter, ja Excel lisab selle automaatselt kõverate sulgude sisse, nagu on näidatud ekraanipildil:

    Kui te ei soovi oma töölehtedel massiivi valemeid kasutada, lisage valemisse veel üks INDEX-funktsioon ja lõpetage see tavalise Enteri vajutusega:

    Kuidas need valemid toimivad

    Valemid kasutavad sama lähenemist kui põhifunktsioon INDEX MATCH, mis vaatab läbi ühe veeru. Mitme kriteeriumi hindamiseks loote kaks või enam TRUE ja FALSE väärtuste massiivi, mis esindavad iga üksiku kriteeriumi vasteid ja mittevasteid, ja seejärel korrutate nende massiivide vastavad elemendid. Korrutamisoperatsioon muudab TRUE ja FALSE väärtused 1 ja 0,ja toodab massiivi, kus 1 vastab kõigile kriteeriumidele vastavatele ridadele. Funktsioon MATCH, mille otsinguväärtus on 1, leiab massiivi esimese "1" ja edastab selle positsiooni INDEXile, mis tagastab selle rea väärtuse määratud veerust.

    Mitte-massiivi valem tugineb INDEX-funktsiooni võimele käsitleda massiive algupäraselt. Teine INDEX on konfigureeritud väärtusega 0 row_num nii, et see edastab MATCHile kogu veerumassiivi.

    See on valemi loogika kõrgetasemeline selgitus. Täielikumat teavet vt Excel INDEX MATCH mitme kriteeriumiga.

    Excel INDEX MATCH koos AVERAGE, MAX, MIN funktsioonidega

    Microsoft Excelil on spetsiaalsed funktsioonid vahemiku minimaalse, maksimaalse ja keskmise väärtuse leidmiseks. Aga mis siis, kui teil on vaja saada väärtus teisest lahtrist, mis on seotud nende väärtustega? Sellisel juhul kasutage funktsiooni MAX, MIN või AVERAGE koos funktsiooniga INDEX MATCH.

    INDEX MATCH koos MAX-iga

    Kui soovite leida suurima väärtuse veerus D ja tagastada sama rea veeru C väärtuse, kasutage seda valemit:

    =INDEX(C2:C10, MATCH(MAX(D2:D10), D2:D10, 0))

    INDEX MATCH koos MIN-iga

    Selleks, et leida väikseim väärtus veerus D ja tõmmata sellega seotud väärtus veerust C, kasutage seda:

    =INDEX(C2:C10, MATCH(MIN(D2:D10), D2:D10, 0))

    INDEX MATCH koos AVERAGE'iga

    Selleks, et leida D2:D10 keskmisele kõige lähemal olev väärtus ja saada vastav väärtus veerust C, tuleb kasutada järgmist valemit:

    =INDEX(C2:C10, MATCH(AVERAGE(D2:D10), D2:D10, -1 ))

    Sõltuvalt sellest, kuidas teie andmed on korraldatud, sisestage funktsiooni MATCH kolmandale argumendile (match_type) kas 1 või -1:

    • Kui teie otsingusammas (meie puhul veerg D) on sorteeritud tõusev , pane 1. Valem arvutab suurima väärtuse, mis on vähem kui või võrdne keskmise väärtusega.
    • Kui teie otsingusammas on sorteeritud laskuv , sisestage -1. Valem arvutab väikseima väärtuse, mis on suurem kui või võrdne keskmise väärtusega.
    • Kui teie otsingumassiiv sisaldab väärtust täpselt võrdne keskmisele, täpse vaste korral võite sisestada 0. Sorteerimine ei ole vajalik.

    Meie näites on veerus D olevad elanikud järjestatud kahanevas järjekorras, seega kasutame vaste tüübiks -1. Tulemuseks saame "Tokyo", kuna selle elanike arv (13 189 000) on lähim vastavus, mis on suurem kui keskmine (12 269 006).

    Te võite olla uudishimulik teada, et ka VLOOKUP saab selliseid arvutusi teha, kuid massiivi valemina: VLOOKUP koos AVERAGE, MAX, MIN.

    INDEX MATCHi kasutamine koos IFNA / IFERRORiga

    Nagu olete ilmselt märganud, kui INDEX MATCH valem Excelis ei leia otsinguväärtust, siis väljastab see vea #N/A. Kui soovite asendada standardse veamärkuse millegi sisukamaga, siis mähkige oma INDEX MATCH valem IFNA funktsiooniga. Näiteks:

    =IFNA(INDEX(C2:C10, MATCH(F1,A2:A10,0)), "Vastavust ei leitud")

    Ja nüüd, kui keegi sisestab otsingutabeli, mida ei ole otsingualas olemas, teatab valem kasutajale selgesõnaliselt, et vasteid ei ole leitud:

    Kui soovite tabada kõiki vigu, mitte ainult #N/A, kasutage IFNA asemel funktsiooni IFERROR:

    =IFERROR(INDEX(C2:C10, MATCH(F1,A2:A10,0)), "Oops, midagi läks valesti!")

    Pidage meeles, et paljudes olukordades ei pruugi olla mõistlik kõiki vigu varjata, sest need annavad märku võimalikest vigadest teie valemis.

    See on, kuidas kasutada INDEXi ja MATCHi Excelis. Loodan, et meie valemite näited osutuvad teile kasulikuks ja ootan teid järgmisel nädalal meie blogis!

    Praktiline töövihik allalaadimiseks

    Excel INDEX MATCH näited (.xlsx fail)

    Michael Brown on pühendunud tehnoloogia entusiast, kelle kirg on tarkvaratööriistade abil keerukate protsesside lihtsustamine. Rohkem kui kümneaastase kogemusega tehnoloogiatööstuses on ta lihvinud oma oskusi Microsoft Excelis ja Outlookis, samuti Google Sheetsis ja Docsis. Michaeli ajaveebi eesmärk on jagada oma teadmisi ja teadmisi teistega, pakkudes hõlpsasti järgitavaid näpunäiteid ja õpetusi tootlikkuse ja tõhususe parandamiseks. Olenemata sellest, kas olete kogenud professionaal või algaja, pakub Michaeli ajaveebi väärtuslikke teadmisi ja praktilisi nõuandeid nende oluliste tarkvaratööriistade maksimaalseks kasutamiseks.