Obsah
Tento návod ukazuje, jak používat INDEX a MATCH v aplikaci Excel a v čem je lepší než VLOOKUP.
V několika nedávných článcích jsme se snažili vysvětlit základy funkce VLOOKUP začátečníkům a poskytnout složitější příklady vzorců VLOOKUP zkušeným uživatelům. A nyní se vám pokusím, když už ne rozmluvit používání funkce VLOOKUP, tak alespoň ukázat alternativní způsob, jak v Excelu provádět vertikální vyhledávání.
"K čemu to potřebuji?" možná si říkáte. VLOOKUP má totiž řadu omezení, která vám v mnoha situacích mohou zabránit v dosažení požadovaného výsledku. Na druhou stranu je kombinace INDEX MATCH flexibilnější a má mnoho úžasných funkcí, díky kterým je v mnoha ohledech lepší než VLOOKUP.
Funkce INDEX a MATCH aplikace Excel - základy
Vzhledem k tomu, že cílem tohoto tutoriálu je ukázat alternativní způsob provádění vlookup v Excelu pomocí kombinace funkcí INDEX a MATCH, nebudeme se příliš zabývat jejich syntaxí a použitím. Probereme pouze minimum nezbytné pro pochopení obecné myšlenky a poté se podrobně podíváme na příklady vzorců, které odhalí všechny výhody použití INDEX MATCH místo VLOOKUP.
Funkce INDEX - syntaxe a použití
Funkce INDEX aplikace Excel vrací hodnotu v poli na základě zadaných čísel řádků a sloupců. Syntaxe funkce INDEX je jednoduchá:
INDEX(pole, číslo_řádku, [číslo_sloupce])Zde je velmi jednoduché vysvětlení jednotlivých parametrů:
- pole - rozsah buněk, ze kterých chcete vrátit hodnotu.
- row_num - číslo řádku v poli, ze kterého chcete vrátit hodnotu. Pokud je vynecháno, je vyžadováno číslo sloupce.
- column_num - číslo sloupce v poli, ze kterého chcete vrátit hodnotu. Pokud je vynecháno, je vyžadováno číslo řádku.
Další informace naleznete v části Funkce INDEX aplikace Excel.
A zde je příklad vzorce INDEX v nejjednodušší podobě:
=INDEX(A1:C10,2,3)
Vzorec hledá v buňkách A1 až C10 a vrací hodnotu buňky ve 2. řádku a 3. sloupci, tj. buňky C2.
Velmi snadné, že? Při práci s reálnými daty však sotva kdy víte, který řádek a sloupec chcete, a proto se hodí funkce MATCH.
Funkce MATCH - syntaxe a použití
Funkce MATCH aplikace Excel vyhledá hledanou hodnotu v rozsahu buněk a vrátí ji. relativní poloha této hodnoty v rozsahu.
Syntaxe funkce MATCH je následující:
MATCH(lookup_value, lookup_array, [match_type])- lookup_value - hledané číslo nebo textovou hodnotu.
- lookup_array - rozsah prohledávaných buněk.
- match_type - určuje, zda se má vrátit přesná shoda nebo nejbližší shoda:
- 1 nebo vynecháno - najde největší hodnotu, která je menší nebo rovna hodnotě vyhledávání. Vyžaduje seřazení pole vyhledávání vzestupně.
- 0 - najde první hodnotu, která se přesně rovná vyhledávací hodnotě. V kombinaci INDEX / MATCH téměř vždy potřebujete přesnou shodu, takže třetí argument funkce MATCH nastavíte na 0.
- -1 - najde nejmenší hodnotu, která je větší nebo rovna hodnotě lookup_value. Vyžaduje seřazení pole lookup sestupně.
Například pokud rozsah B1:B3 obsahuje hodnoty "New-York", "Paris", "London", níže uvedený vzorec vrátí číslo 3, protože "London" je třetí položka v rozsahu:
=MATCH("London",B1:B3,0)
Další informace naleznete v části Funkce Excel MATCH.
Na první pohled se může zdát užitečnost funkce MATCH sporná. Koho zajímá pozice hodnoty v rozsahu? To, co chceme vědět, je samotná hodnota.
Dovolte mi připomenout, že relativní pozice hodnoty vyhledávání (tj. čísla řádků a sloupců) je přesně to, co je třeba zadat do příkazu row_num a column_num Jak si jistě pamatujete, funkce INDEX v Excelu dokáže najít hodnotu na rozhraní daného řádku a sloupce, ale nedokáže určit, který přesně řádek a sloupec chcete.
Jak používat funkci INDEX MATCH v aplikaci Excel
Teď, když znáte základy, věřím, že už vám začíná dávat smysl, jak MATCH a INDEX spolupracují. Stručně řečeno, INDEX najde vyhledávací hodnotu podle čísla sloupce a řádku a MATCH tato čísla poskytne. To je vše!
Pro vertikální vyhledávání se funkce MATCH používá pouze k určení čísla řádku a rozsah sloupců se zadává přímo do funkce INDEX:
INDEX ( sloupec vrátit hodnotu z , MATCH ( vyhledávací hodnota , sloupec, proti kterému se můžete podívat , 0))Stále se vám to nedaří pochopit? Možná to bude snazší na příkladu. Předpokládejme, že máte seznam hlavních měst států a jejich obyvatel:
Chcete-li zjistit počet obyvatel určitého hlavního města, například hlavního města Japonska, použijte následující vzorec INDEX MATCH:
=INDEX(C2:C10, MATCH("Japonsko", A2:A10, 0))
Nyní si rozebereme, co jednotlivé složky tohoto vzorce vlastně dělají:
- Funkce MATCH hledá hodnotu "Japan" v rozsahu A2:A10 a vrací číslo 3, protože "Japan" je v poli vyhledávání třetí.
- Číslo řádku přechází přímo na row_num argumentu INDEXu, který mu dává pokyn k vrácení hodnoty z tohoto řádku.
Výše uvedený vzorec se tedy změní na jednoduchý INDEX(C2:C,3), který říká, že se má hledat v buňkách C2 až C10 a vytáhnout hodnotu ze třetí buňky v tomto rozsahu, tj. C4, protože začínáme počítat od druhého řádku.
Nechcete zadávat město do vzorce natvrdo? Zadejte ho do některé buňky, například F1, zadejte odkaz na buňku MATCH a získáte dynamický vyhledávací vzorec:
=INDEX(C2:C10, MATCH(F1,A2:A10,0))
Důležité upozornění! Počet řádků v pole argumentu INDEXu by měl odpovídat počtu řádků v databázi. lookup_array argumentu MATCH, jinak vzorec poskytne nesprávný výsledek.
Počkat, počkat... proč jednoduše nepoužijeme následující vzorec Vlookup? Jaký má smysl ztrácet čas snahou přijít na kloub tajemným zákrutám excelovského MATCH INDEXu?
=VLOOKUP(F1, A2:C10, 3, FALSE)
V tomto případě to nemá smysl :) Tento jednoduchý příklad slouží pouze k demonstraci, abyste si udělali představu o tom, jak funkce INDEX a MATCH spolupracují. Další příklady, které následují níže, vám ukáží skutečnou sílu této kombinace, která si snadno poradí s mnoha složitými scénáři, kdy VLOOKUP klopýtne.
Tipy:
- V aplikacích Excel 365 a Excel 2021 můžete použít modernější vzorec INDEX XMATCH.
- Příklady vzorců s INDEX MATCH pro tabulky Google naleznete v tomto článku.
INDEX MATCH vs. VLOOKUP
Při rozhodování, kterou funkci použít pro vertikální vyhledávání, se většina guru Excelu shoduje, že INDEX MATCH je mnohem lepší než VLOOKUP. Mnoho lidí však stále zůstává u VLOOKUP, jednak proto, že je jednodušší, a jednak proto, že plně nerozumí všem výhodám používání vzorce INDEX MATCH v Excelu. Bez takového porozumění není nikdo ochoten investovat svůj čas do učení složitějšího vzorce INDEX MATCH.syntaxe.
Níže poukážu na hlavní výhody MATCH INDEXu oproti VLOOKUPu a vy se rozhodnete, zda je vhodným doplňkem vašeho arzenálu Excelu.
4 hlavní důvody pro použití INDEX MATCH místo VLOOKUP
- Vyhledávání zprava doleva. Jak každý vzdělaný uživatel ví, VLOOKUP se nemůže podívat doleva, což znamená, že hodnota vašeho vyhledávání by se měla vždy nacházet v nejlevějším sloupci tabulky. INDEX MATCH umí vyhledávání vlevo snadno! Následující příklad to ukazuje v akci: Jak VLOOKUPovat hodnotu vlevo v Excelu.
- Bezpečné vkládání nebo odstraňování sloupců. Vzorce VLOOKUP se při odstranění nebo přidání nového sloupce do vyhledávací tabulky pokazí nebo poskytnou nesprávné výsledky, protože syntaxe VLOOKUP vyžaduje zadání čísla indexu sloupce, ze kterého chcete data vytáhnout. Při přidávání nebo odstraňování sloupců se číslo indexu přirozeně mění.
Při použití funkce INDEX MATCH zadáváte rozsah vracených sloupců, nikoli číslo indexu. Díky tomu můžete vkládat a odebírat libovolný počet sloupců, aniž byste se museli starat o aktualizaci každého přidruženého vzorce.
- Žádný limit pro velikost hodnoty vyhledávání. Při použití funkce VLOOKUP nesmí celková délka vyhledávacích kritérií překročit 255 znaků, jinak dojde k chybě #VALUE!. Pokud tedy váš soubor dat obsahuje dlouhé řetězce, je jediným funkčním řešením INDEX MATCH.
- Vyšší rychlost zpracování. Pokud jsou vaše tabulky relativně malé, nebude ve výkonu Excelu téměř žádný významný rozdíl. Pokud však vaše pracovní listy obsahují stovky nebo tisíce řádků, a tudíž stovky nebo tisíce vzorců, bude MATCH INDEX pracovat mnohem rychleji než VLOOKUP, protože Excel bude muset zpracovávat pouze vyhledávací a návratové sloupce, nikoli celé pole tabulky.
Vliv funkce VLOOKUP na výkon aplikace Excel může být obzvláště patrný, pokud váš sešit obsahuje složité vzorce pole, jako jsou VLOOKUP a SUM. Jde o to, že kontrola každé hodnoty v poli vyžaduje samostatné volání funkce VLOOKUP. Čím více hodnot tedy pole obsahuje a čím více vzorců pole v sešitě máte, tím pomaleji Excel pracuje.
INDEX MATCH aplikace Excel - příklady vzorců
Když už víte, proč se naučit funkci MATCH INDEX, přejděme k tomu nejzajímavějšímu a podívejme se, jak můžete teoretické znalosti použít v praxi.
Vzorec INDEX MATCH pro vyhledávání zprava doleva nahoru
Jak již bylo zmíněno, funkce VLOOKUP se neumí podívat vlevo. Pokud se tedy hodnoty vyhledávání nenacházejí v nejlevějším sloupci, není šance, že vám vzorec VLOOKUP přinese požadovaný výsledek. Funkce INDEX MATCH v Excelu je univerzálnější a je jí v podstatě jedno, kde se nachází sloupce vyhledávání a návratové sloupce.
Pro tento příklad přidáme vlevo od naší vzorové tabulky sloupec Pořadí a pokusíme se zjistit, jak si stojí ruské hlavní město Moskva z hlediska počtu obyvatel.
S hodnotou vyhledávání v G1 použijte následující vzorec pro vyhledávání v C2:C10 a vraťte odpovídající hodnotu z A2:A10:
=INDEX(A2:A10,MATCH(G1,C2:C10,0))
Tip: Pokud plánujete použít vzorec INDEX MATCH pro více než jednu buňku, nezapomeňte oba rozsahy uzamknout pomocí absolutních odkazů na buňky (například $A$2:$A$10 a $C$2:4C$10), aby se při kopírování vzorce nezkreslily.
INDEX MATCH MATCH pro vyhledávání v řádcích a sloupcích
Ve výše uvedených příkladech jsme použili INDEX MATCH jako náhradu klasického VLOOKUP pro vrácení hodnoty z předem definovaného rozsahu jednoho sloupce. Co když ale potřebujete vyhledávat ve více řádcích a sloupcích? Jinými slovy, co když chcete provést tzv. matrice nebo obousměrný vyhledávání?
Může to znít složitě, ale vzorec je velmi podobný základní funkci INDEX MATCH aplikace Excel, jen s jedním rozdílem. Hádejte co?
Jednoduše použijte dvě funkce MATCH - jednu pro získání čísla řádku a druhou pro získání čísla sloupce. A těm z vás, kteří uhodli správně, gratuluji :)
INDEX (pole, MATCH ( hodnota vlookup , sloupec, proti kterému se můžete podívat , 0), MATCH ( hodnota hlookup , řádek, proti kterému se vzhlíží , 0))A nyní se prosím podívejte na níže uvedenou tabulku a sestavme vzorec INDEX MATCH MATCH, který zjistí počet obyvatel (v milionech) v dané zemi v daném roce.
S cílovou zemí v G1 (hodnota vlookup) a cílovým rokem v G2 (hodnota hlookup) má vzorec tento tvar:
=INDEX(B2:D11, MATCH(G1,A2:A11,0), MATCH(G2,B1:D1,0))
Jak tento vzorec funguje
Kdykoli potřebujete pochopit složitý vzorec aplikace Excel, rozdělte jej na menší části a zjistěte, co dělají jednotlivé funkce:
MATCH(G1,A2:A11,0)
- vyhledá v buňkách A2:A11 hodnotu v buňce G1 ("Čína") a vrátí její pozici, která je 2.
MATCH(G2,B1:D1,0))
- prohledá B1:D1 a zjistí pozici hodnoty v buňce G2 ("2015"), která je 3.
Výše uvedená čísla řádků a sloupců odpovídají příslušným argumentům funkce INDEX:
INDEX(B2:D11, 2, 3)
Výsledkem je hodnota v průsečíku 2. řádku a 3. sloupce v rozsahu B2:D11, což je hodnota v buňce D3. Snadné? Ano!
Excel INDEX MATCH pro vyhledávání více kritérií
Pokud jste měli možnost přečíst si náš návod Excel VLOOKUP, pravděpodobně jste již vyzkoušeli vzorec pro Vlookup s více kritérii. Podstatným omezením tohoto přístupu je však nutnost přidat pomocný sloupec. Dobrou zprávou je, že funkce INDEX MATCH aplikace Excel dokáže vyhledávat i se dvěma a více kritérii, aniž by bylo nutné měnit nebo restrukturalizovat zdrojová data!
Zde je obecný vzorec INDEX MATCH s více kritérii:
{=INDEX( return_range , MATCH(1, ( kritéria1 = range1 ) * ( kritéria2 = rozsah2 ), 0))}Poznámka: Jedná se o vzorec pole, který je třeba doplnit klávesovou zkratkou Ctrl + Shift + Enter.
Předpokládejme, že ve vzorové tabulce níže chcete zjistit částku na základě 2 kritérií, Zákazník a Produkt .
Následující vzorec INDEX MATCH funguje skvěle:
=INDEX(C2:C10, MATCH(1, (F1=A2:A10) * (F2=B2:B10), 0))
Kde C2:C10 je rozsah, ze kterého se má vrátit hodnota, F1 je kritérium1, A2:A10 je rozsah, který se má porovnat s kritériem1, F2 je kritérium 2 a B2:B10 je rozsah, který se má porovnat s kritériem2.
Nezapomeňte vzorec správně zadat stisknutím kláves Ctrl + Shift + Enter a Excel jej automaticky uzavře do kudrnatých závorek, jak je znázorněno na obrázku:
Pokud nechcete v pracovních listech používat vzorce s poli, přidejte do vzorce ještě jednu funkci INDEX a dokončete ji obvyklým stiskem klávesy Enter:
Jak tyto vzorce fungují
Vzorce používají stejný přístup jako základní funkce INDEX MATCH, která prochází jeden sloupec. Chcete-li vyhodnotit více kritérií, vytvoříte dvě nebo více polí s hodnotami TRUE a FALSE, které představují shody a neshody pro každé jednotlivé kritérium, a poté příslušné prvky těchto polí vynásobíte. Operace násobení převede hodnoty TRUE a FALSE na 1 a 0,respektive vytvoří pole, kde jedničky odpovídají řádkům, které splňují všechna kritéria. Funkce MATCH s vyhledávací hodnotou 1 najde první "1" v poli a předá její pozici funkci INDEX, která vrátí hodnotu v tomto řádku ze zadaného sloupce.
Vzorec bez pole spoléhá na schopnost funkce INDEX nativně pracovat s poli. Druhý INDEX je nakonfigurován na 0 row_num tak, aby předal celé pole sloupců do MATCH.
To je vysvětlení logiky vzorce na vysoké úrovni. Úplné podrobnosti naleznete v části Excel INDEX MATCH s více kritérii.
Excel INDEX MATCH s AVERAGE, MAX, MIN
Microsoft Excel má speciální funkce pro zjištění minimální, maximální a průměrné hodnoty v rozsahu. Co když ale potřebujete získat hodnotu z jiné buňky, která je s těmito hodnotami spojena? V takovém případě použijte funkci MAX, MIN nebo PRŮMĚR spolu s funkcí INDEX MATCH.
INDEX MATCH s MAX
Chcete-li zjistit největší hodnotu ve sloupci D a vrátit hodnotu ze sloupce C ve stejném řádku, použijte tento vzorec:
=INDEX(C2:C10, MATCH(MAX(D2:D10), D2:D10, 0))
INDEX MATCH s MIN
Chcete-li najít nejmenší hodnotu ve sloupci D a vytáhnout přidruženou hodnotu ze sloupce C, použijte tuto hodnotu:
=INDEX(C2:C10, MATCH(MIN(D2:D10), D2:D10, 0))
INDEXOVÁ MATICE s PRŮMĚREM
Chcete-li zjistit hodnotu, která je nejblíže průměru ve sloupcích D2:D10, a získat odpovídající hodnotu ze sloupce C, použijte tento vzorec:
=INDEX(C2:C10, MATCH(AVERAGE(D2:D10), D2:D10, -1 ))
Podle toho, jak jsou vaše data uspořádána, zadejte do třetího argumentu (match_type) funkce MATCH buď 1, nebo -1:
- Pokud je váš vyhledávací sloupec (v našem případě sloupec D) seřazen. vzestupně , vložte 1. Vzorec vypočítá největší hodnotu, která je méně než nebo se rovná průměrné hodnotě.
- Pokud je sloupec vyhledávání seřazen sestupně , zadejte -1. Vzorec vypočítá nejmenší hodnotu, která je větší než nebo se rovná průměrné hodnotě.
- Pokud vaše vyhledávací pole obsahuje hodnotu přesně stejný k průměru, pro přesnou shodu můžete zadat 0. Není nutné žádné třídění.
V našem příkladu jsou populace ve sloupci D seřazeny sestupně, takže pro typ shody použijeme -1. Výsledkem je "Tokio", protože jeho populace (13 189 000) je nejbližší shodou, která je větší než průměr (12 269 006).
Možná vás bude zajímat, že VLOOKUP umí provádět i takové výpočty, ale jako vzorec pole: VLOOKUP s AVERAGE, MAX, MIN.
Použití INDEX MATCH s IFNA / IFERROR
Jak jste si pravděpodobně všimli, pokud vzorec INDEX MATCH v aplikaci Excel nemůže najít hledanou hodnotu, zobrazí chybu #N/A. Pokud chcete nahradit standardní zápis chyby něčím smysluplnějším, obalte vzorec INDEX MATCH funkcí IFNA. Například:
=IFNA(INDEX(C2:C10, MATCH(F1,A2:A10,0)), "Nebyla nalezena shoda")
Pokud nyní někdo zadá vyhledávací tabulku, která v rozsahu vyhledávání neexistuje, vzorec uživatele výslovně informuje, že nebyla nalezena žádná shoda:
Pokud chcete zachytit všechny chyby, nejen #N/A, použijte místo funkce IFNA funkci IFERROR:
=IFERROR(INDEX(C2:C10, MATCH(F1,A2:A10,0)), "Jejda, něco se pokazilo!")
Mějte na paměti, že v mnoha situacích může být nerozumné skrývat všechny chyby, protože vás upozorňují na možné chyby ve vašem vzorci.
To je návod, jak používat INDEX a MATCH v Excelu. Doufám, že vám naše příklady vzorců pomohou, a těším se na vás na našem blogu příští týden!
Cvičebnice ke stažení
Příklady INDEX MATCH aplikace Excel (.xlsx soubor)