Obsah
Vytahuje váš VLOOKUP špatná data nebo jej vůbec nemůžete zprovoznit? Tento návod vám ukáže, jak můžete rychle opravit běžné chyby VLOOKUP a překonat jeho hlavní omezení.
V několika dřívějších článcích jsme se zabývali různými aspekty funkce VLOOKUP v Excelu. Pokud nás pozorně sledujete, měli byste být v této oblasti již experty :)
Ne nadarmo však mnozí odborníci na Excel považují funkci VLOOKUP za jednu z nejsložitějších funkcí Excelu. Má spoustu omezení, která jsou zdrojem různých problémů a chyb.
V tomto článku najdete jednoduché vysvětlení hlavních příčin chyb VLOOKUP, jako jsou #N/A, #NAME a #VALUE, a jejich řešení a opravy. Začneme nejzřejmějšími důvody, proč VLOOKUP nefunguje, takže by bylo dobré podívat se na níže uvedené kroky řešení problémů v pořadí.
Oprava chyby #N/A ve funkci VLOOKUP
Ve vzorcích VLOOKUP se zobrazí chybová zpráva #N/A (což znamená "není k dispozici"), pokud Excel nemůže najít hodnotu pro vyhledávání. Důvodů, proč k tomu může dojít, je několik.
1. Hodnota vyhledávání je napsána chybně
Vždy je dobré nejprve zkontrolovat to nejzjevnější : ) K chybám často dochází při práci s opravdu velkými datovými sadami, které se skládají z tisíců řádků, nebo při zadávání vyhledávací hodnoty přímo do vzorce.
2. #N/A v přibližné shodě VLOOKUP
Pokud váš vzorec vyhledá nejbližší shodu, ( range_lookup nastaven na TRUE nebo vynechán), může se chyba #N/A objevit ve dvou případech:
- Hodnota vyhledávání je menší než nejmenší hodnota v poli vyhledávání.
- Sloupec vyhledávání není seřazen vzestupně.
3. #N/A v přesné shodě VLOOKUP
Pokud hledáte přesnou shodu ( range_lookup argument nastaven na FALSE), dojde k chybě #N/A, pokud není nalezena hodnota přesně odpovídající hodnotě vyhledávání. Další informace naleznete v části VLOOKUP přesná shoda vs. přibližná shoda.
4. Vyhledávací sloupec není nejlevějším sloupcem pole tabulky.
Jedním z nejvýznamnějších omezení funkce VLOOKUP aplikace Excel je to, že se nemůže podívat doleva. V důsledku toho by měl být sloupec pro vyhledávání vždy sloupcem nejlevější sloupec V praxi se na to často zapomíná a dochází k chybám #N/A.
Řešení : Pokud není možné restrukturalizovat data tak, aby sloupec pro vyhledávání byl sloupcem nejvíce vlevo, můžete jako alternativu k VLOOKUP použít společně funkce INDEX a MATCH. Zde je příklad vzorce: INDEX MATCH vzorec pro vyhledávání hodnot vlevo.
5. Čísla jsou formátována jako text
Dalším častým zdrojem chyb #N/A ve vzorcích VLOOKUP jsou čísla formátovaná jako text, ať už v hlavní nebo vyhledávací tabulce.
K tomu obvykle dochází při importu dat z externí databáze nebo v případě, že jste před číslo napsali apostrof, aby se zobrazily počáteční nuly.
Zde jsou nejzřetelnější ukazatele čísel formátovaných jako text:
Řešení: Vyberte všechna problematická čísla, klikněte na ikonu chyby a vyberte možnost Převést na Číslo z kontextové nabídky. Další informace naleznete v části Jak převést text na číslo v aplikaci Excel.
6. Přední nebo zadní mezery
Jedná se o nejméně zřejmou příčinu chyby VLOOKUP #N/A, protože lidské oko tyto mezery navíc jen stěží odhalí, zejména při práci s velkými soubory dat, kde je většina položek pod posuvníkem.
Řešení 1: Mezery navíc v hodnotě vyhledávání
Chcete-li zajistit správnou práci vzorce VLOOKUP, obalte hodnotu vyhledávání funkcí TRIM:
=VLOOKUP(TRIM(E1), A2:C10, 2, FALSE)
Řešení 2: Mezery navíc ve sloupci vyhledávání
Pokud se ve sloupci pro vyhledávání vyskytují další mezery, neexistuje snadný způsob, jak se vyhnout chybám #N/A ve funkci VLOOKUP. Místo toho můžete použít kombinaci funkcí INDEX, MATCH a TRIM jako vzorec pole:
=INDEX(B2:B10, MATCH(TRUE, TRIM(A$2:A$10)=TRIM(E1), 0))
Protože se jedná o vzorec pro pole, nezapomeňte stisknout kombinaci kláves Ctrl + Shift + Enter, abyste jej správně dokončili (v aplikacích Excel 365 a Excel 2021, kde jsou pole nativní, funguje tento vzorec také jako běžný vzorec).
Tip: Rychlou alternativou je spuštění nástroje Trim Spaces, který během několika sekund odstraní přebytečné mezery v tabulce vyhledávání i v hlavní tabulce, takže vaše vzorce VLOOKUP budou bezchybné.
Chyba #VALUE! ve vzorcích VLOOKUP
Obecně platí, že Microsoft Excel zobrazí chybu #VALUE!, pokud je hodnota použitá ve vzorci nesprávného datového typu. V případě VLOOKUP existují dva běžné zdroje chyby VALUE!.
1. Hodnota vyhledávání přesahuje 255 znaků
Upozorňujeme, že funkce VLOOKUP nemůže vyhledávat hodnoty obsahující více než 255 znaků. Pokud hodnoty vyhledávání překročí tento limit, zobrazí se chyba #VALUE!:
Řešení : Místo toho použijte vzorec INDEX MATCH. V našem případě tento vzorec funguje dokonale:
=INDEX(B2:B7, MATCH(TRUE, INDEX(A2:A7= E1, 0), 0))
2. Není uvedena úplná cesta k vyhledávacímu sešitu.
Pokud přebíráte data z jiného sešitu, musíte uvést celou cestu k němu. Přesněji řečeno, název sešitu včetně přípony musíte uzavřít do [hranatých závorek] a zadat název listu, za kterým následuje vykřičník. Pokud název sešitu nebo název listu, případně obojí, obsahuje mezery nebo jiné než abecední znaky, musí být cesta uzavřena do jednoduchých uvozovek.
Zde je struktura table_array argument Vlookup z jiného sešitu:
'[název sešitu]název listu'!range
Skutečný vzorec by mohl vypadat podobně:
=VLOOKUP($A$2,'[New Prices.xls]Sheet1'!$B:$D, 3, FALSE)
Výše uvedený vzorec vyhledá hodnotu A2 ve sloupci B listu 1 v tabulce. Nové ceny sešitu a vrátí odpovídající hodnotu ze sloupce D.
Pokud některý prvek cesty chybí, vzorec VLOOKUP nebude fungovat a vrátí chybu #VALUE (pokud není sešit pro vyhledávání právě otevřen).
Další informace naleznete na adrese:
- Jak v aplikaci Excel odkázat na jiný list nebo sešit
- Jak provést Vlookup z jiného sešitu
3. Argument col_index_num je menší než 1.
Těžko si lze představit situaci, kdy někdo záměrně zadá číslo menší než 1, aby určil sloupec, ze kterého se mají vracet hodnoty. Může se to však stát, pokud tento argument vrací nějaká jiná funkce vnořená do vašeho vzorce VLOOKUP.
Pokud tedy col_index_num je větší než 1, váš vzorec vrátí také chybu #VALUE!.
Pokud col_index_num je větší než počet sloupců v poli tabulky, VLOOKUP vyvolá chybu #REF!.
Řešení chyby VLOOKUP #NAME
To je nejjednodušší případ - chyba #NAME? se objeví, pokud jste omylem špatně napsali název funkce.
Řešení je zřejmé - zkontrolujte si pravopis :)
Hlavní příčiny chyb v aplikaci Excel VLOOKUP
Kromě poměrně složité syntaxe má VLOOKUP pravděpodobně více omezení než kterákoli jiná funkce Excelu. Kvůli těmto omezením může zdánlivě správný vzorec často přinést jiné výsledky, než jste očekávali. Níže najdete řešení několika typických scénářů, kdy VLOOKUP selže.
VLOOKUP nerozlišuje velká a malá písmena
Funkce VLOOKUP nerozlišuje velikost písmen a považuje malá a velká písmena za stejná.
Řešení : Použijte VLOOKUP, XLOOKUP nebo INDEX MATCH v kombinaci s funkcí EXACT, která dokáže porovnat velikost písmen v textu. Podrobné vysvětlení a příklady vzorců najdete v tomto návodu: 5 způsobů, jak provést Vlookup s rozlišením velikosti písmen v Excelu.
Do tabulky byl vložen nebo odstraněn nový sloupec
Vzorce VLOOKUP bohužel přestanou fungovat vždy, když je z vyhledávací tabulky odstraněn nebo do ní přidán nový sloupec. K tomu dochází proto, že syntaxe funkce VLOOKUP vyžaduje definování indexového čísla návratového sloupce. Když je do tabulky přidán nebo z ní odstraněn nový sloupec, toto indexové číslo se samozřejmě změní.
Řešení : Na pomoc opět přichází vzorec INDEX MATCH : ) Pomocí INDEX MATCH zadáváte vyhledávací a návratové rozsahy samostatně, takže můžete libovolně odstraňovat nebo vkládat libovolný počet sloupců, aniž byste se museli starat o aktualizaci každého přidruženého vzorce.
Při kopírování vzorce do jiných buněk se změní odkazy na buňky
V nadpisu je vyčerpávající vysvětlení problému, že?
Řešení : Vždy používejte absolutní odkazy (se znakem $) pro table_array např. $A$2:$C$100 nebo $A:$C. Mezi různými typy odkazů lze rychle přepínat stiskem klávesy F4.
VLOOKUP vrací první nalezenou hodnotu
Jak již víte, Excel VLOOKUP vrací první nalezenou hodnotu. Můžete jej však přinutit, aby přinesl 2., 3., 4. nebo jakýkoli jiný výskyt. Existuje také způsob, jak získat poslední shodu nebo všechny nalezené shody.
Řešení : Příklady vzorců jsou k dispozici zde:
- VLOOKUP a vrátit N-tý výskyt
- VLOOKUP více hodnot
- Vzorec XLOOKUP pro získání poslední shody
Proč můj VLOOKUP funguje pro některé buňky, ale pro jiné ne?
Pokud vzorec VLOOKUP vrací v některých buňkách správná data a v jiných chyby #N/A, může to mít několik možných příčin.
1. Pole tabulek není uzamčeno
Předpokládejme, že máte tento vzorec v řádku 2 (řekněme v E2), což funguje dobře:
=VLOOKUP(D2, A2:B10, 2, FALSE)
Po zkopírování do řádku 3 se vzorec změní na:
=VLOOKUP(D3, A3:B11, 2, FALSE)
Protože se relativní reference používá pro table_array , změní se na základě relativní pozice řádku, do kterého je vzorec kopírován, v našem případě z A2:B10 na A3:B11. Pokud se tedy shoda nachází v řádku 2, nebude nalezena!
Řešení : Při použití vzorce VLOOKUP pro více než jednu buňku vždy uzamknout pole tabulek odkaz se znaménkem $ jako $A$2:$B$10.
2. Hodnoty textu nebo datové typy se neshodují
Dalším častým důvodem selhání funkce VLOOKUP je rozdíl mezi hodnotou vyhledávání a podobnou hodnotou ve sloupci vyhledávání. V některých případech je rozdíl tak nepatrný, že je těžké ho vizuálně rozpoznat.
Řešení : Pokud VLOOKUP vrací chybu #N/A, zatímco ve sloupci vyhledávání je jasně vidět hodnota vyhledávání a obě jsou zřejmě napsány úplně stejně, je třeba nejprve určit hlavní příčinu problému - vzorec nebo zdrojová data.
Chcete-li zjistit, zda jsou obě hodnoty stejné nebo rozdílné, proveďte přímé srovnání tímto způsobem:
=E1=A4
Kde E1 je vaše hodnota vyhledávání a A4 je stejná hodnota ve sloupci vyhledávání.
Pokud vzorec vrátí hodnotu FALSE, znamená to, že se hodnoty nějakým způsobem liší, i když vypadají naprosto stejně.
V případě číselné hodnoty , nejčastějším důvodem jsou čísla formátovaná jako text.
V případě textové hodnoty , s největší pravděpodobností je problém v nadbytečných mezerách. Chcete-li to ověřit, zjistěte celkovou délku obou řetězců pomocí funkce LEN:
=LEN(E1)
=LEN(A4)
Pokud se výsledná čísla liší (jako na obrázku níže), našli jste viníka - mezery navíc:
Problém vyřešíte tak, že buď odstraníte přebytečné mezery, nebo použijete tento vzorec INDEX MATCH TRIM.
Proč můj VLOOKUP vytáhne špatná data?
Důvodů, proč váš VLOOKUP vrací špatnou hodnotu, může být ještě více:
- Nesprávný režim vyhledávání Pokud chcete přesnou shodu, nezapomeňte nastavit parametr range_lookup výchozí hodnota je TRUE, takže pokud tento argument vynecháte, VLOOKUP bude předpokládat, že hledáte přibližnou shodu, a bude hledat nejbližší hodnotu, která je menší než hodnota vyhledávání.
- Sloupec vyhledávání není seřazen . Pro přibližnou shodu VLOOKUP ( range_lookup nastaveno na TRUE), musí být první sloupec v poli tabulky seřazen vzestupně od nejmenšího po největší.
- Duplicity ve sloupci vyhledávání Pokud sloupec vyhledávání obsahuje dvě nebo více duplicitních hodnot, VLOOKUP vrátí první nalezenou shodu, která nemusí být tou, kterou očekáváte.
- Nesprávný návratový sloupec . Dvakrát zkontrolujte číslo indexu ve 3. argumentu :)
VLOOKUP nefunguje mezi dvěma listy
Nejprve je třeba poznamenat, že běžné příčiny chyb #N/A, #VALUE a #REF, o kterých jsme hovořili výše, mohou způsobit stejné problémy při vyhledávání z jiného listu. Pokud tomu tak není, podívejte se na následující body:
- Zkontrolujte, zda je externí odkaz na jiný list nebo jiný sešit správný.
- Při provádění Vlookup z jiného sešitu, který je uzavřeno v tuto chvíli ověřte, zda vzorec obsahuje úplnou cestu k uzavřenému sešitu.
- Pokud VLOOKUP nelze vybrat pole tabulky v jiném pracovním listu (tj. když zvýrazníte rozsah v listu vyhledávání, nezobrazí se nic v okně table_array argumentu ve vzorci nebo v příslušném poli průvodce vzorcem), pak jsou s největší pravděpodobností oba listy otevřeny v různých instancích aplikace Excel a nemohou spolu komunikovat. Další informace naleznete v části Jak zjistit, které soubory aplikace Excel jsou v které instanci. Chcete-li to napravit, jednoduše zavřete všechna okna aplikace Excel a poté znovu otevřete listy/sešity ve stejné instanci (výchozí chování).
Jak provést Vlookup bez chyb v aplikaci Excel
Pokud nechcete své uživatele strašit standardními chybovými hláškami Excelu, můžete místo toho zobrazit vlastní uživatelsky přívětivý text nebo vrátit prázdnou buňku, pokud nic nenajdete. Toho lze dosáhnout pomocí funkce VLOOKUP s funkcí IFERROR nebo IFNA.
Zachycení všech chyb
V aplikaci Excel 2007 a novějších verzích můžete pomocí funkce IFERROR zkontrolovat vzorec VLOOKUP na výskyt chyb a vrátit vlastní text (nebo prázdný řetězec), jestliže jakákoli chyba je detekován.
Například:
=IFERROR(VLOOKUP(E1, A2:B10, 2, FALSE), "Jejda, něco se pokazilo")
V aplikaci Excel 2003 a dřívějších verzích můžete ke stejnému účelu použít vzorec IF ISERROR:
=IF(ISERROR(VLOOKUP(E1, A2:B10, 2, FALSE)), "Jejda, něco se pokazilo", VLOOKUP(E1, A2:B10, 2, FALSE))
Další podrobnosti naleznete v části Použití IFERROR s VLOOKUP v aplikaci Excel.
Zpracování chyb #N/A
Chcete-li zachytit pouze chyby #N/A a ignorovat všechny ostatní typy chyb, použijte funkci IFNA (v aplikaci Excel 2013 a vyšší) nebo vzorec IF ISNA (ve všech verzích).
Například:
=IFNA(VLOOKUP(E1, A2:B10, 2, FALSE), "Jejda, nebyla nalezena žádná shoda. Zkuste to prosím znovu!")
=IF(ISNA(VLOOKUP(E1, A2:B10, 2, FALSE)), "Jejda, nebyla nalezena žádná shoda. Zkuste to prosím znovu!", VLOOKUP(E1, A2:B10, 2, FALSE))
To je pro dnešek vše. Doufejme, že vám tento návod pomůže zbavit se chyb VLOOKUP a že vaše vzorce budou fungovat podle vašich představ.