INHOUDSOPGAWE
Hierdie tutoriaal wys hoe om INDEX en MATCH in Excel te gebruik en hoe dit beter is as VLOOKUP.
In 'n paar onlangse artikels het ons 'n goeie poging aangewend om die basiese beginsels van VLOOKUP-funksie aan beginners te verduidelik en meer komplekse VLOOKUP-formulevoorbeelde aan kraggebruikers te verskaf. En nou, ek sal probeer om jou nie daarvan te praat om VLOOKUP te gebruik nie, dan wys jy ten minste 'n alternatiewe manier om 'n vertikale opsoek in Excel te doen.
"Waarvoor het ek dit nodig?" wonder jy dalk. Omdat VLOOKUP talle beperkings het wat kan verhoed dat jy in baie situasies die gewenste resultaat kry. Aan die ander kant is die INDEX MATCH-kombinasie meer buigsaam en het baie wonderlike kenmerke wat dit in baie opsigte beter as VLOOKUP maak.
Excel INDEX en MATCH-funksies - die basiese beginsels
Aangesien die doel van hierdie tutoriaal is om 'n alternatiewe manier te demonstreer om 'n vlookup in Excel te doen deur 'n kombinasie van INDEX- en MATCH-funksies te gebruik, sal ons nie veel stilstaan by hul sintaksis en MATCH-funksies nie. gebruike. Ons sal slegs die minimum dek wat nodig is om die algemene idee te verstaan en dan 'n in-diepte kyk na formulevoorbeelde wat al die voordele van die gebruik van INDEX MATCH in plaas van VLOOKUP openbaar.
INDEX-funksie - sintaksis en gebruik
Die Excel INDEX-funksie gee 'n waarde in 'n skikking terug op grond van die ry- en kolomnommers wat jy spesifiseer. Die sintaksis van die INDEX-funksie is eenvoudig:
( kriteria1= reeks1) * ( kriteria2= reeks2), 0))}Let wel. Dit is 'n skikkingsformule wat voltooi moet word met die Ctrl + Shift + Enter-kortpad.
In die voorbeeldtabel hieronder, veronderstel dat jy die bedrag op grond van 2 kriteria wil vind, Klant en Produk .
Die volgende INDEX MATCH formule werk 'n lekkerny:
=INDEX(C2:C10, MATCH(1, (F1=A2:A10) * (F2=B2:B10), 0))
Waar C2:C10 die reeks is waaruit 'n waarde teruggestuur word, F1 is kriteria1, A2:A10 is die reeks om te vergelyk met kriteria1, F2 is kriteria 2, en B2:B10 is die reeks om te vergelyk met kriteria2.
Onthou om die formule korrek in te voer deur Ctrl + Shift + Enter te druk , en Excel sal dit outomaties krullerige hakies omsluit soos in die skermkiekie getoon:
As jy liewer nie skikkingsformules in jou werkblaaie wil gebruik nie, voeg nog een INDEX-funksie by die formule en voltooi dit met 'n gewone Enter-treffer:
Hoe hierdie formules werk
Die formules gebruik dieselfde benadering as die basiese INDEX MATCH-funksie wat deurkyk 'n enkele kolom. Om veelvuldige kriteria te evalueer, skep jy twee of meer skikkings WAAR en ONWAAR waardes wat passings en nie-passings vir elke individuele kriterium verteenwoordig, en vermenigvuldig dan die ooreenstemmende elemente van hierdie skikkings. Die vermenigvuldigingsbewerking skakel WAAR en ONWAAR in onderskeidelik 1 en 0 om, en produseer 'n skikking waar 1'e ooreenstem met rye wat by al die kriteria pas.Die MATCH-funksie met 'n opsoekwaarde van 1 vind die eerste "1" in die skikking en gee sy posisie deur na INDEX, wat 'n waarde in hierdie ry vanaf die gespesifiseerde kolom terugstuur.
Die nie-skikking formule maak staat op die vermoë van die INDEX-funksie om skikkings inheems te hanteer. Die tweede INDEKS is gekonfigureer met 0 ry_getal sodat dit die hele kolomskikking na MATCH sal deurgee.
Dit is 'n hoëvlak verduideliking van die formule se logika. Vir volledige besonderhede, sien asseblief Excel INDEX MATCH met veelvuldige kriteria.
Excel INDEX MATCH met AVERAGE, MAX, MIN
Microsoft Excel het spesiale funksies om 'n minimum, maksimum en gemiddelde waarde in 'n reeks. Maar wat as jy 'n waarde van 'n ander sel moet kry wat met daardie waardes geassosieer word? Gebruik in hierdie geval die MAX-, MIN- of AVERAGE-funksie saam met INDEX MATCH.
INDEX MATCH met MAX
Om die grootste waarde in kolom D te vind en 'n waarde uit kolom C in die dieselfde ry, gebruik hierdie formule:
=INDEX(C2:C10, MATCH(MAX(D2:D10), D2:D10, 0))
INDEX MATCH with MIN
Om die kleinste waarde in kolom D op te spoor en 'n geassosieerde waarde uit kolom C te trek, gebruik hierdie een :
=INDEX(C2:C10, MATCH(MIN(D2:D10), D2:D10, 0))
INDEX MATCH met GEMIDDELDE
Om die waarde naaste aan die gemiddelde in D2:D10 uit te werk en 'n ooreenstemmende waarde uit kolom C te kry, is dit die formule om te gebruik:
=INDEX(C2:C10, MATCH(AVERAGE(D2:D10), D2:D10, -1 ))
Afhangende van hoe jou data georganiseer is, verskaf óf 1 óf -1 aan die derde argument (passing_tipe) vandie MATCH-funksie:
- As jou opsoekkolom (kolom D in ons geval) oplopend gesorteer is, plaas 1. Die formule sal die grootste waarde bereken wat minder is as of gelyk aan die gemiddelde waarde.
- As jou opsoekkolom dalend gesorteer is, voer -1 in. Die formule sal die kleinste waarde bereken wat groter as of gelyk aan die gemiddelde waarde is.
- As jou opsoekskikking 'n waarde bevat presies gelyk aan die gemiddelde, sal jy kan 0 invoer vir presiese passing. Geen sortering word vereis nie.
In ons voorbeeld word die populasies in kolom D in dalende volgorde gesorteer, dus gebruik ons -1 vir pasmaattipe. As gevolg hiervan kry ons "Tokio" aangesien sy bevolking (13 189 000) die naaste wedstryd is wat groter is as die gemiddelde (12 269 006).
Jy is dalk nuuskierig om te weet dat VLOOKUP kan ook sulke berekeninge uitvoer, maar as 'n skikkingsformule: VLOOKUP met AVERAGE, MAX, MIN.
Gebruik INDEX MATCH met IFNA / IFERROR
Soos jy waarskynlik opgemerk het, as 'n INDEX MATCH formule in Excel kan nie 'n opsoekwaarde vind nie, dit produseer 'n #N/A-fout. As jy die standaardfoutnotasie met iets meer betekenisvol wil vervang, draai jou INDEX MATCH-formule in die IFNA-funksie. Byvoorbeeld:
=IFNA(INDEX(C2:C10, MATCH(F1,A2:A10,0)), "No match is found")
En nou, as iemand 'n opsoektabel invoer wat nie in die opsoekreeks bestaan nie, sal die formule die gebruiker uitdruklik inlig dat geen passing is niegevind:
As jy alle foute wil opspoor, nie net #N/A nie, gebruik die IFERROR-funksie in plaas van IFNA:
=IFERROR(INDEX(C2:C10, MATCH(F1,A2:A10,0)), "Oops, something went wrong!")
Hou asseblief in gedagte dat dit in baie situasies onverstandig kan wees om alle foute te verdoesel omdat dit jou waarsku oor moontlike foute in jou formule.
Dis hoe om INDEX en MATCH in Excel te gebruik. Ek hoop ons formule voorbeelde sal nuttig wees vir jou en sien uit daarna om jou volgende week op ons blog te sien!
Oefen werkboek om af te laai
Excel INDEX MATCH voorbeelde (.xlsx lêer)
INDEX(skikking, ry_getal, [kolom_getal])Hier is 'n baie eenvoudige verduideliking van elke parameter:
- skikking - 'n reeks selle wat jy 'n waarde vanaf.
- rynommer - die rynommer in skikking waaruit jy 'n waarde wil terugstuur. As dit weggelaat word, word die kolom_getal vereis.
- kolomnommer - die kolomnommer in die skikking waaruit jy 'n waarde wil terugstuur. As dit weggelaat word, word ry_getal vereis.
Vir meer inligting, sien asseblief Excel INDEX-funksie.
En hier is 'n voorbeeld van die INDEX-formule in sy eenvoudigste vorm:
=INDEX(A1:C10,2,3)
Die formule soek in selle A1 tot C10 en gee 'n waarde van die sel in die 2de ry en die 3de kolom terug, dit wil sê sel C2.
Baie maklik, reg? Wanneer jy egter met regte data werk, sal jy amper nooit weet watter ry en kolom jy wil hê nie, dis waar die MATCH-funksie handig te pas kom.
MATCH-funksie - sintaksis en gebruik
Die Excel MATCH-funksie soek vir 'n opsoekwaarde in 'n reeks selle en gee die relatiewe posisie van daardie waarde in die reeks terug.
Die sintaksis van die MATCH-funksie is soos volg:
MATCH(lookup_value) , opsoek_skikking, [pasvorm_tipe])- opsoekwaarde - die getal of tekswaarde waarna jy soek.
- opsoekskikking - 'n reeks selle wat gesoek.
- passing_tipe - spesifiseer of 'n presiese passing of die naaste passing teruggestuur moet word:
- 1 of weggelaat - vind die grootste waarde wat minder as of gelyk is aan die opsoekwaarde. Vereis sortering van die opsoekskikking in stygende volgorde.
- 0 - vind die eerste waarde wat presies gelyk is aan die opsoekwaarde. In die INDEX / MATCH-kombinasie het jy amper altyd 'n presiese passing nodig, dus stel jy die derde argument van jou MATCH-funksie op 0.
- -1 - vind die kleinste waarde wat groter as of gelyk is aan lookup_value. Vereis dat die opsoekskikking in dalende volgorde gesorteer word.
Byvoorbeeld, as die reeks B1:B3 die waardes "New-York", "Parys", "London", bevat, die onderstaande formule gee die getal 3 terug, want "London" is die derde inskrywing in die reeks:
=MATCH("London",B1:B3,0)
Vir meer inligting, sien asseblief Excel MATCH-funksie.
By Met die eerste oogopslag kan die bruikbaarheid van die MATCH-funksie twyfelagtig lyk. Wie gee om oor die posisie van 'n waarde in 'n reeks? Wat ons wel wil weet is die waarde self.
Laat ek jou daaraan herinner dat die relatiewe posisie van die opsoekwaarde (d.i. ry- en kolomnommers) presies is wat jy aan die ry_getal
Hoe om INDEX MATCH funksie in Excel te gebruik
Noudat jy die basiese beginsels ken, glo ek dit hethet reeds begin sin maak hoe MATCH en INDEX saamwerk. In 'n neutedop, INDEX vind die opsoekwaarde volgens kolom- en rynommers, en MATCH verskaf daardie nommers. Dis dit!
Vir vertikale opsoek, gebruik jy die MATCH-funksie net om die rynommer te bepaal en verskaf die kolomreeks direk aan INDEX:
INDEX ( kolom om 'n waarde vanterug te gee , MATCH ( opsoekwaarde, kolom om teen op te kyk, 0))Het jy steeds probleme om dit uit te vind? Dit is dalk makliker om uit 'n voorbeeld te verstaan. Gestel jy het 'n lys van nasionale hoofstede en hul bevolking:
Om die bevolking van 'n sekere hoofstad te vind, sê die hoofstad van Japan, gebruik die volgende INDEKS MATCH formule:
=INDEX(C2:C10, MATCH("Japan", A2:A10, 0))
Nou, kom ons ontleed wat elke komponent van hierdie formule eintlik doen:
- Die MATCH-funksie soek na die opsoekwaarde "Japan" in die reeks A2: A10, en gee die getal 3 terug, want "Japan" is derde in die opsoekskikking.
- Die rynommer gaan direk na die rynommer -argument van INDEX wat dit opdrag gee om 'n waarde daaruit terug te gee ry.
Dus, die bogenoemde formule verander in 'n eenvoudige INDEKS(C2:C,3) wat sê om in selle C2 tot C10 te soek en die waarde van die 3de sel in daardie reeks te trek, d.w.s. C4 want ons begin tel vanaf die tweede ry.
Wil jy nie die stad hardkodeer in die formule nie? Voer dit in een of ander sel in, sê F1, verskaf die selverwysing na MATCH, en jy sal 'n dinamiese opsoekformule kry:
=INDEX(C2:C10, MATCH(F1,A2:A10,0))
Belangrike nota! Die aantal rye in die skikking -argument van INDEX moet ooreenstem met die aantal rye in die opsoek_skikking -argument van MATCH, anders sal die formule 'n verkeerde resultaat lewer.
Wag, wag... hoekom moenie Gebruik ons nie bloot die volgende Vlookup-formule nie? Wat is die punt daarvan om tyd te mors om te probeer om die geheimsinnige kinkels van Excel MATCH INDEX uit te vind?
=VLOOKUP(F1, A2:C10, 3, FALSE)
In hierdie geval, geen sin nie :) Hierdie eenvoudige voorbeeld is slegs vir demonstrasiedoeleindes, sodat jy 'n gevoel kry van hoe die INDEX- en MATCH-funksies saamwerk. Ander voorbeelde wat hieronder volg, sal jou die werklike krag van hierdie kombinasie wys wat maklik baie komplekse scenario's hanteer wanneer VLOOKUP struikel.
Wenke:
- In Excel 365 en Excel 2021 kan jy kan 'n meer moderne INDEX MATCH formule gebruik.
- Vir Google Sheets, sien formulevoorbeelde met INDEX MATCH in hierdie artikel.
INDEX MATCH vs. VLOOKUP
Wanneer Deur te besluit watter funksie om vir vertikale opsoeke te gebruik, stem die meeste Excel-ghoeroes saam dat INDEX MATCH baie beter is as VLOOKUP. Baie mense bly egter steeds by VLOOKUP, eerstens omdat dit eenvoudiger is en tweedens omdat hulle nie alle voordele van die gebruik van die INDEX MATCH-formule in Excel ten volle verstaan nie. Sonder sulke begrip is niemand bereid om hul tyd te spandeer om te leer nie'n meer komplekse sintaksis.
Hieronder sal ek die belangrikste voordele van MATCH INDEX bo VLOOKUP uitwys, en jy besluit of dit 'n waardige toevoeging tot jou Excel-arsenaal is.
4 hoofredes om te gebruik INDEX MATCH in plaas van VLOOKUP
- Opsoek van regs na links. Soos enige opgevoede gebruiker weet, kan VLOOKUP nie na sy linkerkant kyk nie, wat beteken dat jou opsoekwaarde altyd in die linkerkolom van die tafel. INDEX MATCH kan die linkeropsoek met gemak doen! Die volgende voorbeeld wys dit in aksie: Hoe om 'n waarde aan die linkerkant in Excel op te soek.
- Voeg kolomme veilig in of vee uit. VLOOKUP-formules word gebreek of lewer verkeerde resultate wanneer 'n nuwe kolom is uitgevee van of by 'n opsoektabel gevoeg omdat VLOOKUP se sintaksis vereis dat die indeksnommer van die kolom waarvan jy die data wil trek, spesifiseer. Natuurlik, wanneer jy kolomme byvoeg of uitvee, verander die indeksnommer.
Met INDEX MATCH spesifiseer jy die opbrengskolomreeks, nie 'n indeksnommer nie. As gevolg hiervan is dit jou vry om soveel kolomme in te voeg en te verwyder as wat jy wil sonder om bekommerd te wees oor die opdatering van elke geassosieerde formule.
- Geen limiet vir 'n opsoekwaarde se grootte nie. Wanneer die VLOOKUP-funksie gebruik word, kan die totale lengte van jou opsoekkriteria nie 255 karakters oorskry nie, anders sal jy uiteindelik die #VALUE hê ! fout. Dus, as jou datastel lang stringe bevat, is INDEX MATCH die enigste werkoplossing.
- Hoër verwerkingspoed. As jou tabelle relatief klein is, sal daar skaars enige noemenswaardige verskil in Excel-werkverrigting wees. Maar as jou werkblaaie honderde of duisende rye bevat, en gevolglik honderde of duisende formules, sal MATCH INDEX baie vinniger werk as VLOOKUP omdat Excel slegs die opsoek- en terugkeerkolomme sal moet verwerk eerder as die hele tabelskikking.
VLOOKUP se impak op Excel se werkverrigting kan veral opvallend wees as jou werkboek komplekse skikkingsformules soos VLOOKUP en SOM bevat. Die punt is dat die kontrolering van elke waarde in die skikking 'n aparte oproep van die VLOOKUP-funksie vereis. Dus, hoe meer waardes jou skikking bevat en hoe meer skikkingsformules jy in 'n werkboek het, hoe stadiger presteer Excel.
Excel INDEX MATCH - formulevoorbeelde
Ken die redes om die MATCH INDEX-funksie te leer, kom ons kom by die interessantste deel uit en kyk hoe jy die teoretiese kennis in die praktyk kan toepas.
INDEX MATCH-formule om van regs na links op te kyk
As reeds genoem, kan VLOOKUP nie aan sy linkerkant kyk nie. Dus, tensy jou opsoekwaardes die linkerkantste kolom is, is daar geen kans dat 'n Vlookup-formule vir jou die resultaat sal bring wat jy wil hê nie. Die INDEX MATCH-funksie in Excel is meer veelsydig en gee nie regtig om waar die opsoek- en terugkeerkolomme geleë is nie.
Vir hierdie voorbeeld,ons sal die Rang-kolom aan die linkerkant van ons voorbeeldtabel byvoeg en probeer uitvind hoe die Russiese hoofstad, Moskou, in terme van bevolking rangskik.
Met die opsoekwaarde in G1, gebruik die volgende formule om te soek in C2:C10 en gee 'n ooreenstemmende waarde terug vanaf A2:A10:
=INDEX(A2:A10,MATCH(G1,C2:C10,0))
Wenk. As jy van plan is om jou INDEX MATCH-formule vir meer as een sel te gebruik, maak seker dat jy albei reekse met absolute selverwysings (soos $A$2:$A$10 en $C$2:4C$10) sluit sodat hulle nie verwring sal word wanneer kopieer die formule.
INDEX MATCH MATCH om in rye en kolomme te soek
In die bogenoemde voorbeelde het ons INDEX MATCH gebruik as die vervanging vir klassieke VLOOKUP om 'n waarde van 'n voorafbepaalde eenkolom terug te gee reeks. Maar wat as jy in verskeie rye en kolomme moet opsoek? Met ander woorde, wat as jy die sogenaamde matriks of tweerigting -opsoek wil uitvoer?
Dit klink dalk moeilik, maar die formule is baie soortgelyk na die basiese Excel INDEX MATCH-funksie, met net een verskil. Raai wat?
Gebruik eenvoudig twee MATCH-funksies – een om 'n rynommer te kry en die ander om 'n kolomnommer te kry. En ek wens die van julle wat reg geraai het geluk :)
INDEX (skikking, MATCH ( vlookup value, kolom om teen op te kyk, 0), MATCH ( hlookup waarde, ry om teen op te kyk, 0))En kyk nou asseblief na die onderstaande tabel en kom ons bou 'n INDEX MATCH MATCHformule om die bevolking (in miljoene) in 'n gegewe land vir 'n gegewe jaar te vind.
Met die teikenland in G1 (vlookup-waarde) en die teikenjaar in G2 (hlookup-waarde), neem die formule hierdie vorm aan :
=INDEX(B2:D11, MATCH(G1,A2:A11,0), MATCH(G2,B1:D1,0))
Hoe hierdie formule werk
Wanneer jy 'n komplekse Excel-formule moet verstaan, breek dit op in kleiner dele en kyk wat elke individuele funksie doen:
MATCH(G1,A2:A11,0)
– soek deur A2:A11 vir die waarde in sel G1 ("China") en gee sy posisie terug, wat 2 is.
MATCH(G2,B1:D1,0))
– soek deur B1:D1 om die posisie van die waarde in sel G2 ("2015") te kry, wat 3 is.
Bogenoemde ry- en kolomnommers gaan na die ooreenstemmende argumente van die INDEX-funksie:
INDEX(B2:D11, 2, 3)
As gevolg hiervan kry jy 'n waarde by die kruising van die 2de ry en 3de kolom in die reeks B2:D11, wat die waarde in sel D3 is. Maklik? Jip!
Excel INDEX MATCH om verskeie kriteria op te soek
As jy 'n kans gehad het om ons Excel VLOOKUP-tutoriaal te lees, het jy waarskynlik reeds 'n formule na Vlookup getoets met verskeie kriteria. 'n Beduidende beperking van daardie benadering is egter die noodsaaklikheid om 'n helperkolom by te voeg. Die goeie nuus is dat Excel se INDEX MATCH-funksie ook met twee of meer kriteria kan naslaan, sonder om jou brondata te wysig of te herstruktureer!
Hier is die generiese INDEX MATCH-formule met veelvuldige kriteria:
{=INDEX( returnreeks, MATCH(1,