Obsah
V tomto kurzu se budeme zabývat tím, jak společně používat funkce IFERROR a VLOOKUP k zachycení a zpracování různých chyb. Kromě toho se naučíte, jak v Excelu provádět postupné vlookupy vnořením několika funkcí IFERROR na sebe.
Excel VLOOKUP a IFERROR - tyto dvě funkce mohou být dost těžko pochopitelné samostatně, natož když jsou kombinovány. V tomto článku najdete několik přehledných příkladů, které se zabývají běžným použitím a jasně ilustrují logiku vzorců.
Pokud nemáte s funkcemi IFERROR a VLOOKUP mnoho zkušeností, bylo by dobré si nejprve zopakovat jejich základy podle výše uvedených odkazů.
Vzorec IFERROR VLOOKUP pro zpracování #N/A a dalších chyb
Pokud aplikace Excel Vlookup nenajde hodnotu vyhledávání, vyhodí chybu #N/A, například takto:
V závislosti na vašich obchodních potřebách můžete chtít chybu zamaskovat vlastním textem, nulou nebo prázdnou buňkou.
Příklad 1. IFERROR se vzorcem VLOOKUP pro nahrazení chyb vlastním textem
Pokud chcete nahradit standardní zápis chyby vlastním textem, zabalte vzorec VLOOKUP do IFERROR a do 2. argumentu zadejte libovolný text ( value_if_error ), například "Nenalezeno":
IFERROR(VLOOKUP( ... ), "Nenalezeno")S hodnotou vyhledávání v B2 v tabulce Main a rozsahem vyhledávání A2:B4 v tabulce Lookup má vzorec následující tvar:
=IFERROR(VLOOKUP(B2,'Lookup table'!$A$2:$B$5, 2, FALSE), "Nenalezeno")
Následující obrázek ukazuje náš vzorec IFERROR VLOOKUP v aplikaci Excel v akci:
Výsledek vypadá mnohem srozumitelněji a méně děsivě, že?
Podobným způsobem můžete použít INDEX MATCH společně s IFERROR:
=IFERROR(INDEX('Lookup table'!$B$2:$B$5,MATCH(B2,'Lookup table'!$A$2:$A$5,0)), "Nenalezeno")
Vzorec IFERROR INDEX MATCH je užitečný zejména tehdy, když chcete vytáhnout hodnoty ze sloupce, který leží vlevo od sloupce vyhledávání (levé vyhledávání), a vrátit vlastní text, když není nic nalezeno.
Příklad 2. IFERROR s VLOOKUP pro vrácení prázdného místa nebo 0, pokud není nic nalezeno
Pokud nechcete při nenalezení hodnoty vyhledávání nic zobrazit, nechte IFERROR zobrazit zprávu prázdný řetězec (""):
IFERROR(VLOOKUP( ... ),"")V našem příkladu je vzorec následující:
=IFERROR(VLOOKUP(B2,'Vyhledávací tabulka'!$A$2:$B$5, 2, FALSE), "")
Jak vidíte, nevrací nic, pokud se hledaná hodnota nenachází v seznamu pro vyhledávání.
Pokud chcete chybu nahradit chybou nulová hodnota , do posledního argumentu vložte 0:
=IFERROR(VLOOKUP(B2,'Vyhledávací tabulka'!$A$2:$B$5, 2, FALSE), 0)
Pozor! Funkce IFERROR v Excelu zachytí všechny druhy chyb, nejen #N/A. Je to dobře nebo špatně? Vše záleží na vašem cíli. Pokud chcete zamaskovat všechny možné chyby, je IFERROR Vlookup správnou cestou. V mnoha situacích to však může být nerozumná technika.
Pokud jste například vytvořili pojmenovaný rozsah pro data tabulky a ve vzorci Vlookup jste tento název špatně napsali, IFERROR zachytí chybu #NAME? a nahradí ji textem "Nenalezeno" nebo jakýmkoli jiným textem, který zadáte. V důsledku toho se nikdy nemusíte dozvědět, že váš vzorec poskytuje špatné výsledky, pokud si překlepu sami nevšimnete. V takovém případě by bylo rozumnější zachytit pouze chyby #N/A.K tomu použijte vzorec IFNA VLOOKUP v aplikaci Excel 2013 a vyšší, IF ISNA VLOOKUP ve všech verzích aplikace Excel.
Závěr zní: buďte velmi opatrní při výběru společníka pro vzorec VLOOKUP :)
Hnízdo IFERROR v rámci VLOOKUP, abyste vždy něco našli
Představte si následující situaci: Vyhledáte v seznamu určitou hodnotu a nenajdete ji. Jaké máte možnosti? Buď se zobrazí chyba N/A, nebo se zobrazí vlastní zpráva. Vlastně je tu ještě třetí možnost - pokud váš primární vlookup klopýtne, vyhledejte něco jiného, co tam určitě je!
Pokud budeme pokračovat v našem příkladu, vytvoříme pro uživatele nějaký řídicí panel, který jim zobrazí interní číslo konkrétní kanceláře. Něco takového:
Jak tedy vytáhnete přípony ze sloupce B na základě čísla kanceláře v D2? Pomocí tohoto běžného vzorce Vlookup:
=VLOOKUP($D$2,$A$2:$B$7,2,FALSE)
A bude to fungovat dobře, pokud uživatelé zadají platné číslo do pole D2. Ale co když uživatel zadá nějaké neexistující číslo? V tom případě ať zavolá na centrálu! Za tímto účelem vložíte výše uvedený vzorec do pole hodnota argument IFERROR a vložte další Vlookup do pole value_if_error argument.
Kompletní vzorec je trochu dlouhý, ale funguje perfektně:
=IFERROR(VLOOKUP("office"&$D$2,$A$2:$B$7,2,FALSE),VLOOKUP("central office",$A$2:$B$7,2,FALSE))
Pokud je číslo kanceláře nalezeno, získá uživatel odpovídající interní číslo:
Pokud číslo kanceláře není nalezeno, zobrazí se číslo ústředny:
Aby byl vzorec trochu kompaktnější, můžete použít jiný přístup:
Nejprve zkontrolujte, zda je číslo v položce D2 přítomno ve sloupci vyhledávání (všimněte si, že jsme nastavili col_index_num na 1, aby vzorec vyhledal a vrátil hodnotu ze sloupce A): VLOOKUP(D2,$A$2:$B$7,1,FALSE)
Pokud zadané číslo kanceláře nenajdeme, hledáme řetězec "ústřední kancelář", který se v seznamu vyhledávání určitě nachází. Za tímto účelem zabalíme první funkci VLOOKUP do IFERROR a celou tuto kombinaci vnoříme do další funkce VLOOKUP:
=VLOOKUP(IFERROR(VLOOKUP(D2,$A$2:$B$7,1,FALSE), "central office"),$A$2:$B$7,2)
No, trochu jiný vzorec, stejný výsledek:
Možná se mě ale zeptáte, jaký je důvod vyhledávat "centrální kancelář". Proč nezadat číslo přípojky přímo v IFERROR? Protože přípojka se může někdy v budoucnu změnit. Pokud se tak stane, budete muset aktualizovat údaje pouze jednou ve zdrojové tabulce, aniž byste se museli starat o aktualizaci jednotlivých vzorců VLOOKUP.
Jak provádět sekvenční VLOOKUP v aplikaci Excel
V situacích, kdy potřebujete provést tzv. sekvenční nebo zřetězené Vlookups v Excelu v závislosti na tom, zda předchozí vyhledávání bylo úspěšné nebo neúspěšné, vnořte dvě nebo více funkcí IFERROR, které spustí vaše Vlookups jeden po druhém:
IFERROR(VLOOKUP( ... ), IFERROR(VLOOKUP( ... ), IFERROR(VLOOKUP( ... ), "Nenalezeno")))Vzorec pracuje s následující logikou:
Pokud první VLOOKUP nic nenajde, první IFERROR zachytí chybu a spustí další VLOOKUP. Pokud druhý VLOOKUP selže, druhý IFERROR zachytí chybu a spustí třetí VLOOKUP atd. Pokud všechny VLOOKUPy narazí, poslední IFERROR vrátí vaši zprávu.
Tento vnořený vzorec IFERROR je užitečný zejména tehdy, když je třeba provést Vlookup přes více listů jak je uvedeno v následujícím příkladu.
Řekněme, že máte tři seznamy stejnorodých dat ve třech různých pracovních listech (v tomto příkladu čísla kanceláří) a chcete získat rozšíření pro určité číslo.
Za předpokladu, že hodnota vyhledávání je v buňce A2 v aktuálním listu a rozsah vyhledávání je A2:B5 ve 3 různých listech (sever, jih a západ), funguje následující vzorec:
=IFERROR(VLOOKUP(A2,North!$A$2:$B$5,2,FALSE), IFERROR(VLOOKUP(A2,South!$A$2:$B$5,2,FALSE), IFERROR(VLOOKUP(A2,West!$A$2:$B$5,2,FALSE), "Not found")))
Náš vzorec "zřetězených hledání Vlookups" tedy hledá ve třech různých listech v pořadí, v jakém jsme je do vzorce vnořili, a přinese první nalezenou shodu:
Takto se v Excelu používá IFERROR s VLOOKUP. Děkuji vám za přečtení a doufám, že se uvidíme na našem blogu příští týden!
Dostupné soubory ke stažení
Příklady vzorce IFERROR VLOOKUP aplikace Excel