Obsah
Tento návod ukazuje, ako používať INDEX a MATCH v programe Excel a v čom je lepší ako VLOOKUP.
V niekoľkých nedávnych článkoch sme sa snažili začiatočníkom vysvetliť základy funkcie VLOOKUP a skúseným používateľom poskytnúť zložitejšie príklady vzorcov VLOOKUP. A teraz sa vám pokúsim, ak nie odradiť od používania funkcie VLOOKUP, tak aspoň ukázať alternatívny spôsob, ako v Exceli vykonať vertikálne vyhľadávanie.
"Na čo to potrebujem?" možno sa pýtate. Pretože VLOOKUP má množstvo obmedzení, ktoré vám v mnohých situáciách môžu zabrániť získať požadovaný výsledok. Na druhej strane, kombinácia INDEX MATCH je flexibilnejšia a má mnoho úžasných funkcií, vďaka ktorým je v mnohých ohľadoch lepšia ako VLOOKUP.
Funkcie INDEX a MATCH aplikácie Excel - základy
Keďže cieľom tohto návodu je ukázať alternatívny spôsob vykonávania vlookup v programe Excel pomocou kombinácie funkcií INDEX a MATCH, nebudeme sa príliš zaoberať ich syntaxou a použitím. Budeme sa zaoberať len minimom potrebným na pochopenie všeobecnej myšlienky a potom sa podrobne pozrieme na príklady vzorcov, ktoré odhalia všetky výhody používania INDEX MATCH namiesto VLOOKUP.
Funkcia INDEX - syntax a použitie
Funkcia INDEX programu Excel vráti hodnotu v poli na základe zadaných čísel riadkov a stĺpcov. Syntax funkcie INDEX je jednoduchá:
INDEX(array, row_num, [column_num])Tu je veľmi jednoduché vysvetlenie jednotlivých parametrov:
- pole - rozsah buniek, z ktorých chcete vrátiť hodnotu.
- číslo_riadku - číslo riadku v poli, z ktorého chcete vrátiť hodnotu. Ak sa vynechá, vyžaduje sa číslo stĺpca.
- column_num - číslo stĺpca v poli, z ktorého chcete vrátiť hodnotu. Ak sa vynechá, vyžaduje sa číslo riadku.
Viac informácií nájdete v časti Funkcia INDEX aplikácie Excel.
A tu je príklad vzorca INDEX v jeho najjednoduchšej podobe:
=INDEX(A1:C10,2,3)
Vzorec hľadá v bunkách A1 až C10 a vráti hodnotu bunky v 2. riadku a 3. stĺpci, t. j. bunky C2.
Veľmi jednoduché, však? Pri práci s reálnymi údajmi by ste však sotva vedeli, ktorý riadok a stĺpec chcete, a tu sa hodí funkcia MATCH.
Funkcia MATCH - syntax a použitie
Funkcia Excel MATCH vyhľadá vyhľadávanú hodnotu v rozsahu buniek a vráti relatívna poloha tejto hodnoty v rozsahu.
Syntax funkcie MATCH je nasledujúca:
MATCH(lookup_value, lookup_array, [match_type])- lookup_value - hľadané číslo alebo textovú hodnotu.
- lookup_array - rozsah vyhľadávaných buniek.
- match_type - určuje, či sa má vrátiť presná zhoda alebo najbližšia zhoda:
- 1 alebo vynechať - nájde najväčšiu hodnotu, ktorá je menšia alebo rovná hodnote vyhľadávania. Vyžaduje zoradenie vyhľadávacieho poľa vzostupne.
- 0 - nájde prvú hodnotu, ktorá sa presne rovná vyhľadávanej hodnote. V kombinácii INDEX / MATCH takmer vždy potrebujete presnú zhodu, preto nastavíte tretí argument funkcie MATCH na hodnotu 0.
- -1 - nájde najmenšiu hodnotu, ktorá je väčšia alebo rovná hodnote lookup_value. Vyžaduje zoradenie poľa lookup zostupne.
Ak napríklad rozsah B1:B3 obsahuje hodnoty "New-York", "Paris", "London", nasledujúci vzorec vráti číslo 3, pretože "London" je tretia položka v rozsahu:
=MATCH("London",B1:B3,0)
Viac informácií nájdete v časti Funkcia Excel MATCH.
Na prvý pohľad sa môže zdať užitočnosť funkcie MATCH sporná. Koho zaujíma pozícia hodnoty v rozsahu? To, čo chceme vedieť, je samotná hodnota.
Dovoľte mi pripomenúť, že relatívna pozícia vyhľadávacej hodnoty (t. j. čísla riadkov a stĺpcov) je presne to, čo musíte poskytnúť funkcii číslo_riadku a column_num Ako si pamätáte, Excel INDEX dokáže nájsť hodnotu na spojnici daného riadku a stĺpca, ale nedokáže určiť, ktorý presne riadok a stĺpec chcete.
Ako používať funkciu INDEX MATCH v programe Excel
Teraz, keď už poznáte základy, verím, že vám už začalo dávať zmysel, ako MATCH a INDEX spolupracujú. V skratke, INDEX nájde vyhľadávanú hodnotu podľa čísla stĺpca a riadku a MATCH poskytne tieto čísla. To je všetko!
Pri vertikálnom vyhľadávaní používate funkciu MATCH len na určenie čísla riadku a rozsah stĺpcov zadávate priamo do funkcie INDEX:
INDEX ( stĺpec na vrátenie hodnoty z , MATCH ( vyhľadávacia hodnota , stĺpec, proti ktorému sa môžete pozrieť , 0))Ešte stále máte problém to pochopiť? Možno to ľahšie pochopíte na príklade. Predpokladajme, že máte zoznam hlavných miest štátov a ich obyvateľov:
Ak chcete zistiť počet obyvateľov určitého hlavného mesta, napríklad hlavného mesta Japonska, použite nasledujúci vzorec INDEX MATCH:
=INDEX(C2:C10, MATCH("Japonsko", A2:A10, 0))
Teraz analyzujme, čo jednotlivé zložky tohto vzorca vlastne robia:
- Funkcia MATCH hľadá vyhľadávaciu hodnotu "Japan" v rozsahu A2:A10 a vracia číslo 3, pretože "Japan" je tretie v poli vyhľadávania.
- Číslo riadku prechádza priamo do číslo_riadku argument INDEXu, ktorý mu dáva pokyn na vrátenie hodnoty z tohto riadku.
Takže vyššie uvedený vzorec sa zmení na jednoduchý INDEX(C2:C,3), ktorý hovorí, že sa má hľadať v bunkách C2 až C10 a vytiahnuť hodnotu z tretej bunky v tomto rozsahu, t. j. C4, pretože začíname počítať od druhého riadku.
Nechcete do vzorca natvrdo zadávať mesto? Zadajte ho do niektorej bunky, napríklad F1, zadajte odkaz na bunku MATCH a získate dynamický vyhľadávací vzorec:
=INDEX(C2:C10, MATCH(F1,A2:A10,0))
Dôležité upozornenie! Počet riadkov v pole argument INDEX by mal zodpovedať počtu riadkov v lookup_array argumentu MATCH, inak vzorec poskytne nesprávny výsledok.
Počkať, počkať... prečo jednoducho nepoužijeme nasledujúci vzorec Vlookup? Aký zmysel má strácať čas snahou pochopiť tajomné zákutia Excelu MATCH INDEX?
=VLOOKUP(F1, A2:C10, 3, FALSE)
V tomto prípade to vôbec nemá zmysel :) Tento jednoduchý príklad slúži len na demonštráciu, aby ste získali predstavu o tom, ako funkcie INDEX a MATCH spolupracujú. Ďalšie príklady, ktoré nasledujú nižšie, vám ukážu skutočnú silu tejto kombinácie, ktorá si ľahko poradí s mnohými zložitými scenármi, keď VLOOKUP narazí.
Tipy:
- V aplikáciách Excel 365 a Excel 2021 môžete použiť modernejší vzorec INDEX XMATCH.
- Pre tabuľky Google si pozrite príklady vzorcov s INDEX MATCH v tomto článku.
INDEX MATCH vs. VLOOKUP
Pri rozhodovaní, ktorú funkciu použiť na vertikálne vyhľadávanie, sa väčšina guru Excelu zhoduje, že INDEX MATCH je oveľa lepší ako VLOOKUP. Mnoho ľudí však stále zostáva pri VLOOKUP, jednak preto, že je jednoduchší, a jednak preto, že úplne nerozumejú všetkým výhodám používania vzorca INDEX MATCH v programe Excel. Bez takéhoto porozumenia nikto nie je ochotný investovať svoj čas do učenia sa zložitejšiehosyntax.
Nižšie poukážem na kľúčové výhody MATCH INDEXu oproti VLOOKUPu a vy sa rozhodnete, či je to dôstojný doplnok vášho arzenálu Excelu.
4 hlavné dôvody, prečo používať INDEX MATCH namiesto VLOOKUP
- Vyhľadávanie sprava doľava. Ako každý vzdelaný používateľ vie, VLOOKUP sa nemôže pozerať doľava, čo znamená, že vaša vyhľadávaná hodnota by sa mala vždy nachádzať v ľavom stĺpci tabuľky. INDEX MATCH dokáže ľahko vykonať vyhľadávanie vľavo! Nasledujúci príklad ho ukazuje v akcii: Ako VLOOKUPovať hodnotu doľava v programe Excel.
- Bezpečné vkladanie alebo odstraňovanie stĺpcov. Vzorce VLOOKUP sa pokazia alebo poskytujú nesprávne výsledky, keď sa z vyhľadávacej tabuľky odstráni nový stĺpec alebo sa do nej pridá nový stĺpec, pretože syntax VLOOKUP vyžaduje zadanie indexového čísla stĺpca, z ktorého chcete čerpať údaje. Prirodzene, keď pridáte alebo odstránite stĺpce, indexové číslo sa zmení.
Pri INDEX MATCH zadávate rozsah vrátených stĺpcov, nie číslo indexu. Výsledkom je, že môžete vkladať a odstraňovať ľubovoľný počet stĺpcov bez toho, aby ste sa museli starať o aktualizáciu každého súvisiaceho vzorca.
- Žiadny limit pre veľkosť hodnoty vyhľadávania. Pri použití funkcie VLOOKUP nesmie celková dĺžka kritérií vyhľadávania prekročiť 255 znakov, inak dôjde k chybe #VALUE! Ak teda váš súbor údajov obsahuje dlhé reťazce, jediným funkčným riešením je INDEX MATCH.
- Vyššia rýchlosť spracovania. Ak sú vaše tabuľky relatívne malé, nebude vo výkone Excelu takmer žiadny významný rozdiel. Ak však vaše pracovné hárky obsahujú stovky alebo tisíce riadkov, a teda stovky alebo tisíce vzorcov, MATCH INDEX bude pracovať oveľa rýchlejšie ako VLOOKUP, pretože Excel bude musieť spracovať iba stĺpce vyhľadávania a vrátenia, a nie celé pole tabuľky.
Vplyv funkcie VLOOKUP na výkon programu Excel môže byť obzvlášť viditeľný, ak váš zošit obsahuje zložité vzorce poľa, ako napríklad VLOOKUP a SUM. Ide o to, že kontrola každej hodnoty v poli si vyžaduje samostatné volanie funkcie VLOOKUP. Takže čím viac hodnôt pole obsahuje a čím viac vzorcov poľa v zošite máte, tým pomalší je výkon programu Excel.
Excel INDEX MATCH - príklady vzorcov
Keď už poznáme dôvody, prečo sa naučiť funkciu MATCH INDEX, prejdime k tomu najzaujímavejšiemu a pozrime sa, ako môžete teoretické znalosti uplatniť v praxi.
Vzorec INDEX MATCH na vyhľadávanie sprava doľava
Ako už bolo spomenuté, funkcia VLOOKUP sa nemôže pozerať na svoju ľavú stranu. Ak sa teda hodnoty vyhľadávania nenachádzajú v stĺpci úplne vľavo, nie je šanca, že vám vzorec VLOOKUP prinesie požadovaný výsledok. Funkcia INDEX MATCH v programe Excel je univerzálnejšia a v skutočnosti jej nezáleží na tom, kde sa nachádzajú stĺpce vyhľadávania a vrátenia.
V tomto príklade pridáme stĺpec Rank do ľavej časti našej vzorovej tabuľky a pokúsime sa zistiť, ako sa ruské hlavné mesto Moskva umiestnilo z hľadiska počtu obyvateľov.
S hodnotou vyhľadávania v G1 použite nasledujúci vzorec na vyhľadávanie v C2:C10 a vrátenie zodpovedajúcej hodnoty z A2:A10:
=INDEX(A2:A10,MATCH(G1,C2:C10,0))
Tip: Ak plánujete použiť vzorec INDEX MATCH pre viac ako jednu bunku, nezabudnite oba rozsahy uzamknúť pomocou absolútnych odkazov na bunky (napríklad $A$2:$A$10 a $C$2:4C$10), aby sa pri kopírovaní vzorca neskreslili.
INDEX MATCH MATCH na vyhľadávanie v riadkoch a stĺpcoch
Vo vyššie uvedených príkladoch sme použili INDEX MATCH ako náhradu za klasický VLOOKUP na vrátenie hodnoty z vopred definovaného rozsahu jedného stĺpca. Ale čo ak potrebujete vyhľadávať vo viacerých riadkoch a stĺpcoch? Inými slovami, čo ak chcete vykonať tzv. matica alebo obojsmerný vyhľadávať?
Môže to znieť zložito, ale vzorec je veľmi podobný základnej funkcii INDEX MATCH programu Excel, len s jedným rozdielom. Hádajte čo?
Jednoducho použite dve funkcie MATCH - jednu na získanie čísla riadku a druhú na získanie čísla stĺpca. A gratulujem tým z vás, ktorí uhádli správne :)
INDEX (pole, MATCH ( hodnota vlookup , stĺpec, proti ktorému sa môžete pozrieť , 0), MATCH ( hodnota hlookup , riadok, proti ktorému sa môžete pozrieť , 0))A teraz sa pozrite na nasledujúcu tabuľku a vytvorme vzorec INDEX MATCH MATCH na zistenie počtu obyvateľov (v miliónoch) v danej krajine za daný rok.
S cieľovou krajinou v G1 (hodnota vlookup) a cieľovým rokom v G2 (hodnota hlookup) má vzorec tento tvar:
=INDEX(B2:D11, MATCH(G1,A2:A11,0), MATCH(G2,B1:D1,0))
Ako tento vzorec funguje
Vždy, keď potrebujete pochopiť zložitý vzorec programu Excel, rozdeľte ho na menšie časti a zistite, čo robia jednotlivé funkcie:
MATCH(G1,A2:A11,0)
- vyhľadá v A2:A11 hodnotu v bunke G1 ("Čína") a vráti jej pozíciu, ktorá je 2.
MATCH(G2,B1:D1,0))
- prehľadá B1:D1, aby získal pozíciu hodnoty v bunke G2 ("2015"), ktorá je 3.
Uvedené čísla riadkov a stĺpcov zodpovedajú príslušným argumentom funkcie INDEX:
INDEX(B2:D11, 2, 3)
Výsledkom je hodnota v priesečníku 2. riadku a 3. stĺpca v rozsahu B2:D11, čo je hodnota v bunke D3. Jednoduché? Áno!
Excel INDEX MATCH na vyhľadávanie viacerých kritérií
Ak ste mali možnosť prečítať si náš návod Excel VLOOKUP, pravdepodobne ste už vyskúšali vzorec na Vlookup s viacerými kritériami. Podstatným obmedzením tohto prístupu je však nutnosť pridať pomocný stĺpec. Dobrou správou je, že funkcia INDEX MATCH aplikácie Excel dokáže vyhľadávať aj s dvoma alebo viacerými kritériami bez toho, aby ste museli upravovať alebo reštrukturalizovať zdrojové údaje!
Tu je všeobecný vzorec INDEX MATCH s viacerými kritériami:
{=INDEX( return_range , MATCH(1, ( kritériá1 = rozsah1 ) * ( kritériá2 = rozsah2 ), 0))}Poznámka: Toto je vzorec poľa, ktorý je potrebné doplniť pomocou klávesovej skratky Ctrl + Shift + Enter.
Predpokladajme, že vo vzorovej tabuľke nižšie chcete nájsť sumu na základe 2 kritérií, Zákazník a Produkt .
Nasledujúci vzorec INDEX MATCH funguje výborne:
=INDEX(C2:C10, MATCH(1, (F1=A2:A10) * (F2=B2:B10), 0))
Kde C2:C10 je rozsah, z ktorého sa má vrátiť hodnota, F1 je kritérium1, A2:A10 je rozsah, ktorý sa má porovnať s kritériom1, F2 je kritérium 2 a B2:B10 je rozsah, ktorý sa má porovnať s kritériom2.
Nezabudnite vzorec správne zadať stlačením klávesovej skratky Ctrl + Shift + Enter a Excel ho automaticky uzavrie do hranatých zátvoriek, ako je znázornené na obrázku:
Ak nechcete vo svojich pracovných listoch používať vzorce polí, pridajte do vzorca ešte jednu funkciu INDEX a dokončite ho bežným stlačením klávesu Enter:
Ako tieto vzorce fungujú
Vzorce používajú rovnaký prístup ako základná funkcia INDEX MATCH, ktorá hľadá v jednom stĺpci. Ak chcete vyhodnotiť viacero kritérií, vytvorte dve alebo viac polí s hodnotami TRUE a FALSE, ktoré predstavujú zhody a nezhody pre každé jednotlivé kritérium, a potom vynásobte príslušné prvky týchto polí. Operácia násobenia konvertuje hodnoty TRUE a FALSE na 1 a 0,resp. vytvorí pole, kde 1 zodpovedá riadkom, ktoré vyhovujú všetkým kritériám. Funkcia MATCH s vyhľadávacou hodnotou 1 nájde prvú "1" v poli a odovzdá jej pozíciu funkcii INDEX, ktorá vráti hodnotu v tomto riadku zo zadaného stĺpca.
Vzorec bez polí sa spolieha na schopnosť funkcie INDEX natívne pracovať s poliami. Druhý INDEX je nakonfigurovaný s 0 číslo_riadku tak, aby sa do MATCH odovzdalo celé pole stĺpcov.
Toto je vysvetlenie logiky vzorca na vysokej úrovni. Všetky podrobnosti nájdete v časti Excel INDEX MATCH s viacerými kritériami.
Excel INDEX MATCH s AVERAGE, MAX, MIN
Microsoft Excel má špeciálne funkcie na zistenie minimálnej, maximálnej a priemernej hodnoty v rozsahu. Ale čo ak potrebujete získať hodnotu z inej bunky, ktorá je s týmito hodnotami spojená? V tomto prípade použite funkciu MAX, MIN alebo AVERAGE spolu s funkciou INDEX MATCH.
INDEX MATCH s MAX
Ak chcete nájsť najväčšiu hodnotu v stĺpci D a vrátiť hodnotu zo stĺpca C v tom istom riadku, použite tento vzorec:
=INDEX(C2:C10, MATCH(MAX(D2:D10), D2:D10, 0))
INDEX MATCH s MIN
Ak chcete nájsť najmenšiu hodnotu v stĺpci D a vytiahnuť súvisiacu hodnotu zo stĺpca C, použite túto hodnotu:
=INDEX(C2:C10, MATCH(MIN(D2:D10), D2:D10, 0))
INDEX MATCH s priemerom
Ak chcete zistiť hodnotu, ktorá je najbližšie k priemeru v D2:D10, a získať zodpovedajúcu hodnotu zo stĺpca C, použite tento vzorec:
=INDEX(C2:C10, MATCH(AVERAGE(D2:D10), D2:D10, -1 ))
V závislosti od toho, ako sú vaše údaje usporiadané, zadajte do tretieho argumentu (match_type) funkcie MATCH hodnotu 1 alebo -1:
- Ak je váš vyhľadávací stĺpec (v našom prípade stĺpec D) zoradený vzostupne , vložte 1. Vzorec vypočíta najväčšiu hodnotu, ktorá je menej ako alebo sa rovná priemernej hodnote.
- Ak je stĺpec vyhľadávania zoradený zostupne , zadajte -1. Vzorec vypočíta najmenšiu hodnotu, ktorá je väčšia ako alebo sa rovná priemernej hodnote.
- Ak vaše vyhľadávacie pole obsahuje hodnotu presne rovnaké na priemer, môžete zadať 0 pre presnú zhodu. Nevyžaduje sa žiadne triedenie.
V našom príklade sú populácie v stĺpci D zoradené zostupne, takže pre typ zhody použijeme -1. Ako výsledok dostaneme "Tokio", pretože jeho populácia (13 189 000) je najbližšia zhoda, ktorá je väčšia ako priemer (12 269 006).
Možno vás bude zaujímať, že VLOOKUP dokáže vykonávať aj takéto výpočty, ale ako vzorec poľa: VLOOKUP s AVERAGE, MAX, MIN.
Používanie INDEX MATCH s IFNA / IFERROR
Ako ste si pravdepodobne všimli, ak vzorec INDEX MATCH v programe Excel nemôže nájsť hľadanú hodnotu, vytvorí chybu #N/A. Ak chcete nahradiť štandardný zápis chyby niečím zmysluplnejším, zabaľte vzorec INDEX MATCH do funkcie IFNA. Napríklad:
=IFNA(INDEX(C2:C10, MATCH(F1,A2:A10,0)), "Žiadna zhoda nebola nájdená")
Ak teraz niekto zadá vyhľadávaciu tabuľku, ktorá neexistuje v rozsahu vyhľadávania, vzorec explicitne informuje používateľa, že sa nenašla žiadna zhoda:
Ak chcete zachytiť všetky chyby, nielen #N/A, použite namiesto funkcie IFNA funkciu IFERROR:
=IFERROR(INDEX(C2:C10, MATCH(F1,A2:A10,0)), "Ups, niečo sa pokazilo!")
Majte na pamäti, že v mnohých situáciách môže byť nerozumné zakrývať všetky chyby, pretože vás upozorňujú na možné chyby vo vašom vzorci.
To je spôsob, ako používať INDEX a MATCH v programe Excel. Dúfam, že vám naše príklady vzorcov pomôžu a teším sa na vás na našom blogu budúci týždeň!
Cvičebnica na stiahnutie
Príklady programu Excel INDEX MATCH (.xlsx súbor)