INDEX MATCH MATCH in Excel vir tweedimensionele opsoek

  • Deel Dit
Michael Brown

Die tutoriaal wys 'n paar verskillende formules om tweedimensionele opsoek in Excel uit te voer. Kyk net deur die alternatiewe en kies jou gunsteling :)

Wanneer jy na iets in jou Excel-sigblaaie soek, sal jy die meeste van die tyd vertikaal in kolomme of horisontaal in rye opsoek. Maar soms moet jy oor beide rye en kolomme kyk. Met ander woorde, jy poog om 'n waarde te vind by die kruising van 'n sekere ry en kolom. Dit word matriksopsoek genoem (ook bekend as 2-dimensionele of 2-rigtingopsoek ), en hierdie tutoriaal wys hoe om dit op 4 verskillende maniere te doen.

    Excel INDEX MATCH MATCH formule

    Die gewildste manier om 'n tweerigting-opsoek in Excel te doen, is deur INDEX MATCH MATCH te gebruik. Dit is 'n variasie van die klassieke INDEX MATCH formule waarby jy nog een MATCH funksie voeg om beide die ry- en kolomnommers te kry:

    INDEX ( data_skikking, MATCH ( vlookup_value, opsoek_kolom_reeks, 0), MATCH ( hopsoekwaarde, opsoek_ryreeks, 0))

    Kom ons maak as voorbeeld 'n formule om 'n populasie te trek van 'n sekere dier in 'n gegewe jaar uit die tabel hieronder. Om mee te begin, definieer ons al die argumente:

    • Data_skikking - B2:E4 (dataselle, nie ry- en kolomopskrifte ingesluit nie)
    • Vlookup_value - H1 (teikendier)
    • Opsoek_kolom_reeks - A2:A4 (ryopskrifte: dierename) -A3:A4
    • Hlookup_value - H2 (teikenjaar)
    • Opsoek_ryreeks - B1:E1 (kolomopskrifte: jare)

    Sit al die argumente saam en jy sal hierdie formule vir tweerigting-opsoek kry:

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

    Hoe hierdie formule werk

    Alhoewel dit 'n bietjie kan lyk kompleks met die eerste oogopslag, die formule se logika is regtig eenvoudig en maklik om te verstaan. Die INDEX-funksie haal 'n waarde uit die dataskikking op grond van die ry- en kolomnommers, en twee MATCH-funksies verskaf daardie nommers:

    INDEX(B2:E4, row_num, column_num)

    Hier maak ons ​​gebruik van die vermoë van MATCH(lookup_value, soek_skikking, [passing_tipe]) om 'n relatiewe posisie van opsoekwaarde in opsoek_skikking terug te gee.

    Dus, om die rynommer te kry, soek ons vir die dier van belang (H1) oor die ryopskrifte (A2:A4):

    MATCH(H1, A2:A4, 0)

    Om die kolomnommer te kry, soek ons ​​vir die teikenjaar (H2) oor die kolomopskrifte (B1:E1):

    MATCH(H2, B1:E1, 0)

    In beide gevalle soek ons ​​presiese passing deur die 3de argument op 0 te stel.

    In hierdie voorbeeld gee die eerste MATCH terug 2 omdat ons vlookup-waarde (Ysbeer) gevind word in A3, wat die 2de sel in A2:A4 is. Die tweede MATCH gee 3 terug omdat die hlookup-waarde (2000) gevind word in D1, wat die 3de sel in B1:E1 is.

    Gegewe bogenoemde, verminder die formule na:

    INDEX(B2:E4, 2, 3)

    En gee 'n waarde terug by die kruising van die 2de ry en 3de kolom in die dataskikking B2:E4, wat 'nwaarde in die sel D3.

    VLOOKUP en MATCH formule vir 2-rigting opsoek

    Nog 'n manier om 'n tweedimensionele opsoek in Excel te doen is deur 'n kombinasie van VLOOKUP en MATCH funksies te gebruik:

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

    Vir ons voorbeeldtabel , neem die formule die volgende vorm aan:

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

    Waar:

    • Tabelskikking - A2:E4 (dataselle insluitend ryopskrifte)
    • Vlookup_value - H1 (teikendier)
    • Hlookup_value - H2 (teikenjaar)
    • Opsoek_ryreeks - A1:E1 (kolomopskrifte: jare)

    Hoe hierdie formule werk

    Die kern van die formule is die VLOOKUP-funksie wat vir presiese passing opgestel is (die laaste argument gestel op ONWAAR), wat soek na die opsoekwaarde (H1) in die eerste kolom van die tabelskikking (A2:E4) en 'n waarde van 'n ander kolom in dieselfde ry terugstuur. Om te bepaal uit watter kolom om 'n waarde terug te gee, gebruik jy die MATCH-funksie wat ook opgestel is vir presiese passing (die laaste argument gestel op 0):

    MATCH(H2, A1:E1, 0)

    MATCH soek die waarde in H2 oor die kolomopskrifte (A1:E1) en gee die relatiewe posisie van die gevonde sel terug. In ons geval word die teikenjaar (2010) gevind in E1, wat 5de in die opsoekskikking is. Dus, die getal 5 gaan na die kol_indeks_num argument van VLOOKUP:

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

    VLOOKUP neem dit van daar af, vind 'npresiese passing vir sy opsoekwaarde in A2 en gee 'n waarde van die 5de kolom in dieselfde ry terug, wat die sel E2 is.

    Belangrike nota! Vir die formule om korrek te werk, moet tabelskikking (A2:E4) van VLOOKUP en opsoek_skikking van MATCH (A1:E1) dieselfde aantal kolomme hê, anders moet die nommer wat deur MATCH geslaag is na kol_indeks_nommer sal verkeerd wees (sal nie ooreenstem met die kolom se posisie in tabel_skikking ).

    XLOOKUP-funksie om in rye en kolomme te kyk

    Onlangs het Microsoft nog een funksie in Excel bekendgestel wat bedoel is om alle bestaande opsoekfunksies soos VLOOKUP, HLOOKUP en INDEX MATCH te vervang. XLOOKUP kan onder andere kyk na die kruising van 'n spesifieke ry en kolom:

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

    Vir ons voorbeelddatastel is die formule soos volg:

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

    Let wel. Tans is XLOOKUP 'n beta-funksie, wat slegs beskikbaar is vir Office 365-intekenare wat deel is van die Office Insiders-program.

    Hoe hierdie formule werk

    Die formule gebruik die vermoë van XLOOKUP om 'n hele ry of kolom. Die binneste funksie soek na die teikenjaar in die kopry en gee al die waardes vir daardie jaar terug (in hierdie voorbeeld, vir jaar 1980). Daardie waardes gaan na die return_array argument van die buitensteXLOOKUP:

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

    Die buitenste XLOOKUP-funksie soek na die teikendier oor die kolomopskrifte en gee die waarde in dieselfde posisie vanaf die return_array.

    SUMPRODUCT-formule vir twee -way lookup

    Die SUMPRODUCT-funksie is soos 'n Switserse mes in Excel – dit kan soveel dinge doen buite sy aangewese doel, veral wanneer dit kom by die evaluering van veelvuldige kriteria.

    Om twee na te soek. kriteria, in rye en kolomme, gebruik hierdie generiese formule:

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

    Om 'n 2-rigting-opsoek in ons datastel uit te voer, gaan die formule soos volg:

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

    Die onderstaande sintaksis sal ook werk:

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

    Hoe hierdie formule werk

    In die kern van die formule vergelyk ons ​​twee opsoekwaardes met die ry- en kolomopskrifte (die teikendier in H1 met alle diere name in A2:A4 en die teikenjaar in H2 teenoor alle jare in B1:E1):

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

    Hierdie res resultate in 2 skikkings WAAR en ONWAAR waardes, waar WAAR's passings verteenwoordig:

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

    Die vermenigvuldigingsbewerking dwing die WAAR en ONWAAR waardes in 1'e en 0'e en produseer 'n tweedimensionele skikking van 4 kolomme en 3 rye (rye word geskei deur kommapunte en elke kolom data deur 'n komma):

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

    Die SUMPRODUCT-funksies vermenigvuldig die elemente van bogenoemde skikking met die items vanB2:E4 in dieselfde posisies:

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

    En omdat vermenigvuldiging met nul nul gee, oorleef net die item wat ooreenstem met 1 in die eerste skikking:

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

    Laastens tel SUMPRODUCT die elemente van die resulterende skikking bymekaar en gee 'n waarde van 2000 terug.

    Let wel. As jou tabel meer as een ry of/en kolomopskrifte met dieselfde naam het, sal die finale skikking meer as een getal anders as nul bevat, en al daardie getalle sal opgetel word. As gevolg hiervan, sal jy 'n som van waardes kry wat aan beide kriteria voldoen. Dit is wat die SUMPRODUCT-formule verskil van INDEX MATCH MATCH en VLOOKUP, wat die eerste gevind pasmaat gee.

    Matriksopsoek met benoemde reekse (eksplisiete kruising)

    Nog een ongelooflik eenvoudige manier om te doen 'n matriksopsoek in Excel is deur benoemde reekse te gebruik. Hier is hoe:

    Deel 1: Benoem kolomme en rye

    Die vinnigste manier om elke ry en elke kolom in jou tabel te benoem, is hierdie:

    1. Kies die hele tabel (A1:E4 in ons geval).
    2. Op die Formules -oortjie, in die Gedefinieerde Name -groep, klik Skep van seleksie of druk die Ctrl + Shift + F3-kortpad.
    3. In die Skep name uit seleksie -dialoogkassie, kies Boonste ry en links kolom, en klik OK.

    Dit skep outomaties name gebaseer op die ry- en kolomopskrifte. Daar is egter 'n paar waarskuwings:

    • As jou kolom en/ofryopskrifte is nommers of bevat spesifieke karakters wat nie in Excel-name toegelaat word nie, die name vir sulke kolomme en rye sal nie geskep word nie. Om 'n lys van geskepte name te sien, maak die Naambestuurder oop (Ctrl + F3). As sommige name ontbreek, definieer hulle handmatig soos verduidelik in Hoe om 'n reeks in Excel te benoem.
    • As sommige van jou ry- of kolomopskrifte spasies bevat, sal die spasies vervang word met onderstrepe, byvoorbeeld Polar_bear .

    Vir ons voorbeeldtabel het Excel outomaties net die ryname geskep. Die kolomname moet met die hand geskep word omdat die kolomopskrifte nommers is. Om dit te oorkom, kan jy eenvoudig die nommers met onderstrepe voorafgaan, soos _1990 .

    As gevolg hiervan het ons die volgende benoemde reekse:

    Deel 2 : Maak 'n matriks-opsoekformule

    Om 'n waarde by die snypunt van 'n gegewe ry en kolom te trek, tik net een van die volgende generiese formules in 'n leë sel:

    = rynaam kolomnaam

    Of andersom:

    = kolomnaam rynaam

    Om byvoorbeeld die bevolking van blouwalvisse in 1990 te kry , die formule is so eenvoudig soos:

    =Blue_whale _1990

    As iemand meer gedetailleerde instruksies benodig, sal die volgende stappe jou deur die proses lei:

    1. In 'n sel waar jy wil hê die resultaat moet verskyn, tik die gelykheidsteken (=).
    2. Begin die naam van die teikenry te tik, sê, Blou_walvis . Naas jy 'n paar karakters getik het, sal Excel alle bestaande name vertoon wat by jou invoer pas. Dubbelklik op die gewenste naam om dit in jou formule in te voer:
    3. Tik na die rynaam 'n spasie in, wat werk as die kruisingsoperateur in hierdie geval.
    4. Voer die teikenkolomnaam in ( _1990 in ons geval).
    5. Sodra beide die ry- en kolomname ingevoer is, sal Excel die ooreenstemmende ry en kolom in jou tabel uitlig, en jy druk Enter om die formule te voltooi:

    Jou matriks-opsoek is gedoen, en die onderstaande skermkiekie wys die resultaat:

    Dit is hoe om op te soek in rye en kolomme in Excel. Ek bedank jou vir die lees en hoop om jou volgende week op ons blog te sien!

    Beskikbare aflaaie

    2-dimensionele opsoekvoorbeeldwerkboek

    Michael Brown is 'n toegewyde tegnologie-entoesias met 'n passie om komplekse prosesse te vereenvoudig deur sagteware-instrumente te gebruik. Met meer as 'n dekade se ondervinding in die tegnologiebedryf, het hy sy vaardighede in Microsoft Excel en Outlook, sowel as Google Sheets en Docs, opgeskerp. Michael se blog is toegewy daaraan om sy kennis en kundigheid met ander te deel, en verskaf maklik-om-te volg wenke en tutoriale vir die verbetering van produktiwiteit en doeltreffendheid. Of jy nou 'n ervare professionele persoon of 'n beginner is, Michael se blog bied waardevolle insigte en praktiese raad om die meeste uit hierdie noodsaaklike sagteware-nutsmiddels te kry.