Obsah
Vyťahuje váš VLOOKUP nesprávne údaje alebo sa vám ho vôbec nedarí spustiť? Tento návod vám ukáže, ako môžete rýchlo opraviť bežné chyby VLOOKUP a prekonať jeho hlavné obmedzenia.
V niekoľkých predchádzajúcich článkoch sme sa venovali rôznym aspektom funkcie Excel VLOOKUP. Ak nás pozorne sledujete, mali by ste byť už v tejto oblasti expertom :)
Nie nadarmo však mnohí odborníci na Excel považujú funkciu VLOOKUP za jednu z najzložitejších funkcií Excelu. Má množstvo obmedzení, ktoré sú zdrojom rôznych problémov a chýb.
V tomto článku nájdete jednoduché vysvetlenie hlavných príčin chýb VLOOKUP, ako sú #N/A, #NAME a #VALUE, ako aj ich riešenia a opravy. Začneme najzrejmejšími dôvodmi, prečo VLOOKUP nefunguje, preto by bolo dobré pozrieť si postupne nasledujúce kroky na odstránenie problémov.
Oprava chyby #N/A vo VLOOKUP
Vo vzorcoch VLOOKUP sa zobrazí chybové hlásenie #N/A (čo znamená "nie je k dispozícii"), keď Excel nemôže nájsť hodnotu vyhľadávania. Dôvodov, prečo sa to môže stať, je niekoľko.
1. Hodnota vyhľadávania je nesprávne napísaná
Vždy je dobré najskôr skontrolovať to najzrejmejšie : ) K chybám často dochádza pri práci s naozaj veľkými dátovými súbormi pozostávajúcimi z tisícov riadkov alebo pri zadávaní vyhľadávacej hodnoty priamo do vzorca.
2. #N/A v približnej zhode VLOOKUP
Ak váš vzorec vyhľadá najbližšiu zhodu, ( range_lookup nastavený na TRUE alebo vynechaný), chyba #N/A sa môže objaviť v dvoch prípadoch:
- Hodnota vyhľadávania je menšia ako najmenšia hodnota v poli vyhľadávania.
- Stĺpec vyhľadávania nie je zoradený vzostupne.
3. #N/A v presnej zhode VLOOKUP
Ak hľadáte presnú zhodu ( range_lookup argument je nastavený na FALSE), chyba #N/A nastane, keď sa nenájde hodnota presne zodpovedajúca hodnote vyhľadávania. Viac informácií nájdete v časti VLOOKUP presná zhoda vs. približná zhoda.
4. Vyhľadávací stĺpec nie je najľavejším stĺpcom tabuľkového poľa
Jedným z najvýznamnejších obmedzení programu Excel VLOOKUP je, že sa nemôže pozerať doľava. Preto by mal byť stĺpec vyhľadávania vždy krajný ľavý stĺpec V praxi na to často zabúdame a končíme s chybami #N/A.
Riešenie : Ak nie je možné reštrukturalizovať údaje tak, aby bol vyhľadávací stĺpec stĺpcom najviac vľavo, môžete ako alternatívu k VLOOKUP použiť spoločne funkcie INDEX a MATCH. Tu je príklad vzorca: INDEX MATCH vzorec na vyhľadávanie hodnôt vľavo.
5. Čísla sú formátované ako text
Ďalším častým zdrojom #N/A chýb vo vzorcoch VLOOKUP sú čísla formátované ako text, a to buď v hlavnej, alebo vo vyhľadávacej tabuľke.
Zvyčajne sa to stáva, keď importujete údaje z externej databázy alebo ak ste pred číslo napísali apostrof, aby ste zobrazili úvodné nuly.
Tu sú najzreteľnejšie indikátory čísel formátovaných ako text:
Riešenie: Vyberte všetky problematické čísla, kliknite na ikonu chyby a vyberte Previesť na číslo z kontextovej ponuky. Viac informácií nájdete v časti Ako previesť text na číslo v programe Excel.
6. Vedúce alebo koncové medzery
Toto je najmenej zrejmá príčina chyby VLOOKUP #N/A, pretože ľudské oko si len ťažko všimne tieto dodatočné medzery, najmä pri práci s veľkými súbormi údajov, kde sa väčšina položiek nachádza pod posúvačom.
Riešenie 1: Dodatočné medzery v hodnote vyhľadávania
Ak chcete zabezpečiť správnu prácu vzorca VLOOKUP, zabalte hodnotu vyhľadávania do funkcie TRIM:
=VLOOKUP(TRIM(E1), A2:C10, 2, FALSE)
Riešenie 2: Dodatočné medzery v stĺpci vyhľadávania
Ak sa v stĺpci vyhľadávania vyskytnú ďalšie medzery, neexistuje jednoduchý spôsob, ako sa vyhnúť chybám #N/A vo funkcii VLOOKUP. Namiesto toho môžete použiť kombináciu funkcií INDEX, MATCH a TRIM ako vzorec poľa:
=INDEX(B2:B10, MATCH(TRUE, TRIM(A$2:A$10)=TRIM(E1), 0))
Keďže ide o vzorec pre pole, nezabudnite stlačiť klávesovú skratku Ctrl + Shift + Enter, aby ste ho správne dokončili (v aplikáciách Excel 365 a Excel 2021, kde sú polia natívne, to funguje aj ako bežný vzorec).
Tip: Rýchlou alternatívou je spustenie nástroja Trim Spaces, ktorý v priebehu niekoľkých sekúnd odstráni nadbytočné medzery v tabuľke vyhľadávania aj v hlavnej tabuľke, vďaka čomu budú vaše vzorce VLOOKUP bez chýb.
Chyba #VALUE! vo vzorcoch VLOOKUP
Vo všeobecnosti Microsoft Excel zobrazí chybu #VALUE!, ak hodnota použitá vo vzorci je nesprávneho dátového typu. Pokiaľ ide o VLOOKUP, existujú dva bežné zdroje chyby VALUE!.
1. Hodnota vyhľadávania presahuje 255 znakov
Upozorňujeme, že funkcia VLOOKUP nemôže vyhľadávať hodnoty obsahujúce viac ako 255 znakov. Ak hodnoty vyhľadávania prekročia tento limit, zobrazí sa chyba #VALUE!
Riešenie : Namiesto toho použite vzorec INDEX MATCH. V našom prípade tento vzorec funguje dokonale:
=INDEX(B2:B7, MATCH(TRUE, INDEX(A2:A7= E1, 0), 0))
2. Úplná cesta k vyhľadávaciemu zošitu sa nedodáva
Ak sťahujete údaje z iného zošita, musíte uviesť celú cestu k nemu. Presnejšie, musíte uzavrieť názov zošita vrátane prípony do [hranatých zátvoriek] a uviesť názov hárku, za ktorým nasleduje výkričník. Ak názov zošita alebo názov hárku, prípadne oba názvy obsahujú medzery alebo akékoľvek nealfabetické znaky, cesta musí byť uzavretá v jednoduchých úvodzovkách.
Tu je štruktúra table_array argument Vlookup z iného zošita:
'[názov zošita]názov listu'!rozsah
Skutočný vzorec by mohol vyzerať podobne:
=VLOOKUP($A$2,'[New Prices.xls]Sheet1'!$B:$D, 3, FALSE)
Vyššie uvedený vzorec vyhľadá hodnotu A2 v stĺpci B hárku 1 v Nové ceny zošita a vrátiť zodpovedajúcu hodnotu zo stĺpca D.
Ak niektorý prvok cesty chýba, vzorec VLOOKUP nebude fungovať a vráti chybu #VALUE (pokiaľ nie je práve otvorený zošit s vyhľadávaním).
Viac informácií nájdete na:
- Ako odkázať na iný hárok alebo zošit v programe Excel
- Ako vykonať Vlookup z iného zošita
3. Argument col_index_num je menší ako 1
Ťažko si predstaviť situáciu, keď niekto zámerne zadá číslo menšie ako 1, aby určil stĺpec, z ktorého sa majú vrátiť hodnoty. Môže sa to však stať, ak tento argument vracia nejaká iná funkcia vnorená do vášho vzorca VLOOKUP.
Ak teda col_index_num je väčší ako 1, váš vzorec vráti aj chybu #VALUE!.
Ak col_index_num je väčší ako počet stĺpcov v poli tabuľky, VLOOKUP spôsobí chybu #REF!.
Riešenie chyby VLOOKUP #NAME
Toto je najjednoduchší prípad - chyba #NAME? sa zobrazí, ak ste omylom zle napísali názov funkcie.
Riešenie je zrejmé - skontrolujte si pravopis :)
Hlavné príčiny chýb v programe Excel VLOOKUP
Okrem pomerne komplikovanej syntaxe má VLOOKUP pravdepodobne viac obmedzení ako ktorákoľvek iná funkcia Excelu. Kvôli týmto obmedzeniam môže zdanlivo správny vzorec často priniesť iné výsledky, ako ste očakávali. Nižšie nájdete riešenia niekoľkých typických scenárov, keď VLOOKUP zlyhá.
VLOOKUP nerozlišuje veľké a malé písmená
Funkcia VLOOKUP nerozlišuje veľkosť písmen a malé a veľké písmená považuje za rovnaké.
Riešenie : Použite VLOOKUP, XLOOKUP alebo INDEX MATCH v kombinácii s funkciou EXACT, ktorá dokáže porovnať veľké a malé písmená textu. Podrobné vysvetlenie a príklady vzorcov nájdete v tomto návode: 5 spôsobov, ako v programe Excel vykonať Vlookup s rozlišovaním veľkých a malých písmen.
Do tabuľky bol vložený alebo odstránený nový stĺpec
Žiaľ, vzorce VLOOKUP prestanú fungovať vždy, keď sa z vyhľadávacej tabuľky odstráni alebo do nej pridá nový stĺpec. Stane sa to preto, lebo syntax funkcie VLOOKUP vyžaduje definovanie indexového čísla návratového stĺpca. Keď sa do tabuľky pridá/odstráni nový stĺpec, toto indexové číslo sa samozrejme zmení.
Riešenie : Na pomoc opäť prichádza vzorec INDEX MATCH : ) Pomocou INDEX MATCH zadávate vyhľadávacie a návratové rozsahy samostatne, takže môžete vymazať alebo vložiť ľubovoľný počet stĺpcov bez toho, aby ste sa museli starať o aktualizáciu každého súvisiaceho vzorca.
Odkazy na bunky sa zmenia pri kopírovaní vzorca do iných buniek
V nadpise je uvedené vyčerpávajúce vysvetlenie problému, však?
Riešenie : Vždy používajte absolútne odkazy (so znakom $) pre table_array argument, napr. $A$2:$C$100 alebo $A:$C. Medzi rôznymi typmi odkazov môžete rýchlo prepínať stlačením klávesy F4.
VLOOKUP vráti prvú nájdenú hodnotu
Ako už viete, Excel VLOOKUP vracia prvú nájdenú hodnotu. Môžete ho však prinútiť, aby priniesol 2., 3., 4. alebo akýkoľvek iný výskyt, ktorý chcete. Existuje aj spôsob, ako získať poslednú zhodu alebo všetky nájdené zhody.
Riešenia : Príklady vzorcov sú k dispozícii tu:
- VLOOKUP a vrátenie N-tého výskytu
- VLOOKUP viacero hodnôt
- Vzorec XLOOKUP na získanie poslednej zhody
Prečo môj VLOOKUP funguje pre niektoré bunky, ale pre iné nie?
Keď vzorec VLOOKUP vráti správne údaje I v niektorých bunkách a chyby #N/A v iných, môže to mať niekoľko možných príčin.
1. Tabuľkové pole nie je uzamknuté
Predpokladajme, že máte tento vzorec v riadku 2 (povedzme v E2), ktorý funguje pekne:
=VLOOKUP(D2, A2:B10, 2, FALSE)
Po skopírovaní do riadku 3 sa vzorec zmení na:
=VLOOKUP(D3, A3:B11, 2, FALSE)
Pretože relatívny odkaz sa používa pre table_array , zmení sa na základe relatívnej pozície riadku, do ktorého je vzorec skopírovaný, v našom prípade z A2:B10 na A3:B11. Ak sa teda zhoda nachádza v riadku 2, nebude nájdená!
Riešenie : Pri použití vzorca VLOOKUP pre viac ako jednu bunku vždy uzamknúť pole tabuliek odkaz so znakom $ ako $A$2:$B$10.
2. Hodnoty textu alebo typy údajov sa nezhodujú
Ďalším častým dôvodom zlyhania funkcie VLOOKUP je rozdiel medzi hodnotou vyhľadávania a podobnou hodnotou v stĺpci vyhľadávania. V niektorých prípadoch je rozdiel taký nepatrný, že je ťažké ho vizuálne rozpoznať.
Riešenie : Keď VLOOKUP vracia chybu #N/A, pričom v stĺpci vyhľadávania jasne vidíte hodnotu vyhľadávania a zrejme sú obe napísané úplne rovnako, najprv musíte určiť hlavnú príčinu problému - vzorec alebo zdrojové údaje.
Ak chcete zistiť, či sú tieto dve hodnoty rovnaké alebo rozdielne, vykonajte priame porovnanie týmto spôsobom:
=E1=A4
Kde E1 je vaša hodnota vyhľadávania a A4 je rovnaká hodnota v stĺpci vyhľadávania.
Ak vzorec vráti hodnotu FALSE, znamená to, že hodnoty sa nejakým spôsobom líšia, hoci vyzerajú úplne rovnako.
V prípade číselné hodnoty , najčastejším dôvodom sú čísla formátované ako text.
V prípade textové hodnoty , s najväčšou pravdepodobnosťou je problém v nadbytočných medzerách. Ak si to chcete overiť, zistite celkovú dĺžku oboch reťazcov pomocou funkcie LEN:
=LEN(E1)
=LEN(A4)
Ak sa výsledné čísla líšia (ako na obrázku nižšie), potom ste našli vinníka - extra medzery:
Problém vyriešite tak, že odstránite dodatočné medzery alebo použijete tento vzorec INDEX MATCH TRIM ako riešenie.
Prečo môj VLOOKUP vyťahuje nesprávne údaje?
Dôvodov, prečo váš VLOOKUP vracia nesprávnu hodnotu, môže byť ešte viac:
- Nesprávny režim vyhľadávania Ak chcete presnú zhodu, nezabudnite nastaviť range_lookup Predvolené nastavenie je TRUE, takže ak tento argument vynecháte, VLOOKUP bude predpokladať, že hľadáte približnú zhodu a bude hľadať najbližšiu hodnotu, ktorá je menšia ako hodnota vyhľadávania.
- Stĺpec vyhľadávania nie je zoradený . Pre približnú zhodu VLOOKUP ( range_lookup nastavená na TRUE), musí byť prvý stĺpec v tabuľke zoradený vzostupne, od najmenšieho po najväčší.
- Duplikáty v stĺpci vyhľadávania Ak stĺpec vyhľadávania obsahuje dve alebo viac duplicitných hodnôt, VLOOKUP vráti prvú nájdenú zhodu, čo nemusí byť tá, ktorú očakávate.
- Nesprávny návratový stĺpec . Dvakrát skontrolujte číslo indexu v 3. argumente :)
VLOOKUP nefunguje medzi dvoma listami
Na úvod je potrebné poznamenať, že bežné dôvody chýb #N/A, #VALUE a #REF, o ktorých sme hovorili vyššie, môžu spôsobovať rovnaké problémy pri vyhľadávaní z iného hárku. Ak to tak nie je, pozrite si nasledujúce body:
- Uistite sa, že externý odkaz na iný list alebo iný zošit je správny.
- Pri vykonávaní Vlookup z iného zošita, ktorý je zatvorené overte, či váš vzorec obsahuje úplnú cestu k zatvorenému zošitu.
- Ak VLOOKUP nemožno vybrať tabuľkové pole v inom hárku (t. j. keď označíte rozsah v hárku vyhľadávania, v okne table_array argument vo vzorci alebo v príslušnom poli sprievodcu vzorcom), potom sú s najväčšou pravdepodobnosťou oba hárky otvorené v samostatných inštanciách programu Excel a nemôžu spolu komunikovať. Viac informácií nájdete v časti Ako zistiť, ktoré súbory programu Excel sú v ktorej inštancii. Ak to chcete napraviť, jednoducho zatvorte všetky okná programu Excel a potom znovu otvorte hárky/sešity v tej istej inštancii (predvolené správanie).
Ako Vlookup bez chýb v programe Excel
Ak nechcete používateľov zastrašovať štandardnými chybovými hláškami programu Excel, môžete namiesto nich zobraziť vlastný používateľsky prívetivý text alebo vrátiť prázdnu bunku, ak sa nič nenašlo. To možno urobiť pomocou funkcie VLOOKUP s funkciou IFERROR alebo IFNA.
Zachytenie všetkých chýb
V programe Excel 2007 a novších verziách môžete pomocou funkcie IFERROR skontrolovať vzorec VLOOKUP na prítomnosť chýb a vrátiť vlastný text (alebo prázdny reťazec), ak akákoľvek chyba sa zistí.
Napríklad:
=IFERROR(VLOOKUP(E1, A2:B10, 2, FALSE), "Ups, niečo sa pokazilo")
V programe Excel 2003 a starších môžete na rovnaký účel použiť vzorec IF ISERROR:
=IF(ISERROR(VLOOKUP(E1, A2:B10, 2, FALSE)), "Oops, niečo sa pokazilo", VLOOKUP(E1, A2:B10, 2, FALSE))
Ďalšie podrobnosti nájdete v časti Používanie IFERROR s VLOOKUP v programe Excel.
Spracovanie chýb #N/A
Ak chcete zachytiť len chyby #N/A a ignorovať všetky ostatné typy chýb, použite funkciu IFNA (v programe Excel 2013 a vyšších) alebo vzorec IF ISNA (vo všetkých verziách).
Napríklad:
=IFNA(VLOOKUP(E1, A2:B10, 2, FALSE), "Ups, nenašla sa žiadna zhoda. Skúste to prosím znova!")
=IF(ISNA(VLOOKUP(E1, A2:B10, 2, FALSE)), "Oops, nenašla sa žiadna zhoda. Skúste to prosím znova!", VLOOKUP(E1, A2:B10, 2, FALSE))
To je pre dnešok všetko. Dúfajme, že vám tento návod pomôže zbaviť sa chýb VLOOKUP a že vaše vzorce budú fungovať tak, ako chcete.