Excel VLOOKUP nem működik - #N/A és #VALUE hibák rögzítése

  • Ossza Meg Ezt
Michael Brown

A VLOOKUP rossz adatokat húz ki, vagy egyáltalán nem tudod működésre bírni? Ez a bemutató megmutatja, hogyan javíthatod ki gyorsan a leggyakoribb VLOOKUP hibákat, és hogyan küzdheted le a főbb korlátokat.

Néhány korábbi cikkünkben az Excel VLOOKUP funkció különböző aspektusait vizsgáltuk. Ha szorosan követ minket, mostanra már szakértőnek kell lennie ezen a területen :)

Nem véletlen azonban, hogy sok Excel-szakértő a VLOOKUP-ot az egyik legbonyolultabb Excel-funkciónak tartja. Rengeteg korlátozással rendelkezik, amelyek különböző problémák és hibák forrása.

Ebben a cikkben egyszerű magyarázatokat talál a VLOOKUP hibák, például #N/A, #NAME és #VALUE fő okairól, valamint azok megoldásairól és javításáról. A legnyilvánvalóbb okokkal kezdjük, amiért a VLOOKUP nem működik, ezért érdemes lehet sorrendben megnézni az alábbi hibaelhárítási lépéseket.

    #N/A hiba javítása VLOOKUP-ban

    A VLOOKUP képletekben a #N/A hibaüzenet (azaz "nem elérhető") akkor jelenik meg, ha az Excel nem talál egy keresési értéket. Ennek több oka is lehet.

    1. A keresési értéket rosszul írják.

    Mindig jó ötlet először a legnyilvánvalóbb dolgot ellenőrizni : ) A hibás nyomtatások gyakran akkor fordulnak elő, amikor igazán nagy, több ezer sorból álló adatkészletekkel dolgozol, vagy amikor egy keresési értéket közvetlenül a képletbe írsz be.

    2. #N/A a közelítő egyezésben VLOOKUP

    Ha a képlet a legközelebbi egyezést keresi, ( range_lookup argumentum TRUE-ra állítva vagy elhagyva), a #N/A hiba két esetben jelenhet meg:

    • A keresési érték kisebb, mint a keresési tömb legkisebb értéke.
    • A keresési oszlop nem növekvő sorrendben van rendezve.

    3. #N/A a pontos egyezésű VLOOKUP-ban

    Ha pontos egyezést keres ( range_lookup argumentum FALSE értékre van állítva), a #N/A hiba akkor lép fel, ha nem találunk a keresési értékkel pontosan megegyező értéket. További információért lásd: VLOOKUP pontos egyezés vs. közelítő egyezés.

    4. A keresési oszlop nem a táblázat tömbjének legbaloldali oszlopa.

    Az Excel VLOOKUP egyik legjelentősebb korlátja, hogy nem tud balra nézni. Következésképpen a keresési oszlopnak mindig a legbaloldali oszlop A gyakorlatban gyakran megfeledkezünk erről, és #N/A hibákat kapunk.

    Megoldás : Ha nem lehetséges az adatokat úgy átstrukturálni, hogy a keresési oszlop a bal szélső oszlop legyen, akkor a VLOOKUP alternatívájaként használhatja az INDEX és a MATCH függvényeket együtt. Íme egy képletpélda: INDEX MATCH képlet a bal oldali értékek kereséséhez.

    5. A számok szövegként vannak formázva

    A VLOOKUP képletek másik gyakori forrása #N/A hibák a szövegként formázott számok, akár a fő-, akár a keresőtáblában.

    Ez általában akkor fordul elő, amikor adatokat importál valamilyen külső adatbázisból, vagy ha aposztrófot írt egy szám elé, hogy a vezető nullákat megjelenítse.

    Itt vannak a szövegként formázott számok legnyilvánvalóbb mutatói:

    Megoldás: Jelölje ki az összes problémás számot, kattintson a hiba ikonra, és válassza a Számra konvertálás További információért lásd: Hogyan alakítsunk szöveget számokká az Excelben?

    6. Vezető vagy követő szóközök

    Ez a legkevésbé nyilvánvaló oka a VLOOKUP #N/A hibának, mert emberi szem aligha veszi észre ezeket a plusz szóközöket, különösen, ha nagy adathalmazokkal dolgozunk, ahol a legtöbb bejegyzés a görgetés alatt van.

    Megoldás 1: Extra szóközök a keresési értékben

    A VLOOKUP-képlet helyes működésének biztosítása érdekében a keresési értéket a TRIM függvénybe csomagolja:

    =VLOOKUP(TRIM(E1), A2:C10, 2, FALSE)

    Megoldás 2: Extra szóközök a keresési oszlopban

    Ha a keresési oszlopban extra szóközök fordulnak elő, nincs egyszerű módja a #N/A hibák elkerülésének a VLOOKUP-ban. Ehelyett az INDEX, MATCH és TRIM függvények kombinációját használhatja tömbképletként:

    =INDEX(B2:B10, MATCH(TRUE, TRIM(A$2:A$10)=TRIM(E1), 0))

    Mivel ez egy tömbképlet, ne felejtse el lenyomni a Ctrl + Shift + Enter billentyűkombinációt a megfelelő befejezéshez (az Excel 365 és Excel 2021 programokban, ahol a tömbök natívak, ez normál képletként is működik).

    Tipp. Gyors alternatíva a Trim Spaces eszköz futtatása, amely másodpercek alatt eltünteti a felesleges szóközöket mind a kereső-, mind a fő táblázatban, így a VLOOKUP-képletek hibátlanok lesznek.

    #VALUE! hiba a VLOOKUP képletekben

    A Microsoft Excel általában akkor jeleníti meg a #VALUE! hibát, ha a képletben használt érték nem megfelelő adattípusú. A VLOOKUP tekintetében a VALUE! hiba két gyakori forrása van.

    1. A keresési érték meghaladja a 255 karaktert

    Kérjük, vegye figyelembe, hogy a VLOOKUP nem tud 255 karakternél több karaktert tartalmazó értékeket keresni. Ha a keresési értékek meghaladják ezt a korlátot, egy #VALUE! hiba jelenik meg:

    Megoldás : Használjon helyette INDEX MATCH képletet. A mi esetünkben ez a képlet tökéletesen működik:

    =INDEX(B2:B7, MATCH(TRUE, INDEX(A2:A7= E1, 0), 0))

    2. A keresési munkafüzet teljes elérési útvonala nincs megadva.

    Ha egy másik munkafüzetből húzza ki az adatokat, akkor a teljes elérési utat kell megadnia. Pontosabban, a munkafüzet nevét a kiterjesztéssel együtt [szögletes zárójelbe] kell zárnia, és meg kell adnia a lap nevét, amelyet felkiáltójel követ. Ha a munkafüzet neve vagy a lap neve, vagy mindkettő szóközöket vagy nem ábécés karaktereket tartalmaz, akkor az elérési utat szimpla idézőjelek közé kell zárnia.

    Itt a következő a struktúrája a table_array érv a Vlookuphoz egy másik munkafüzetből:

    '[munkafüzet neve]lap neve'!range

    Egy valódi képlet ehhez hasonlóan nézhet ki:

    =VLOOKUP($A$2,'[Új árak.xls]Sheet1'!$B:$D, 3, FALSE)

    A fenti képlet az A2 értékét keresi a B oszlopban az 1. lap B oszlopában a Új árak munkafüzetet, és adja vissza a D oszlopban lévő megfelelő értéket.

    Ha az elérési útvonal bármely eleme hiányzik, a VLOOKUP-képlet nem fog működni, és #VALUE hibát ad vissza (kivéve, ha a keresési munkafüzet éppen nyitva van).

    További információért lásd:

    • Hogyan hivatkozhat egy másik lapra vagy munkafüzetre az Excelben?
    • Hogyan kell csinálni a Vlookupot egy másik munkafüzetből?

    3. A col_index_num argumentum kisebb, mint 1.

    Nehéz elképzelni olyan helyzetet, amikor valaki szándékosan 1-nél kisebb számot ad meg az oszlop megadásához, amelyből az értékeket vissza kell adni. De előfordulhat, ha ezt az argumentumot a VLOOKUP-képletbe ágyazott más függvény adja vissza.

    Tehát, ha a col_index_num argumentum 1-nél nagyobb, a képleted is a #VALUE! hibát fogja visszaadni.

    Ha col_index_num nagyobb, mint a táblázattömb oszlopainak száma, a VLOOKUP a #REF! hibát produkálja.

    VLOOKUP #NAME hiba megoldása

    Ez a legegyszerűbb eset - a #NAME? hiba akkor jelenik meg, ha véletlenül elírtad a függvény nevét.

    A megoldás nyilvánvaló - ellenőrizze a helyesírást :)

    Az Excel VLOOKUP hibáinak fő okai

    Amellett, hogy a VLOOKUP meglehetősen bonyolult szintaxissal rendelkezik, vitathatatlanul több korlátozással rendelkezik, mint bármely más Excel-funkció. E korlátok miatt a látszólag helyes képlet gyakran a várttól eltérő eredményeket adhat. Az alábbiakban néhány tipikus forgatókönyvre talál megoldást, amikor a VLOOKUP nem működik.

    A VLOOKUP nem érzékeny a nagy- és kisbetűkre

    A VLOOKUP funkció nem tesz különbséget a betűk nagy- és kisbetűi között, és a kis- és nagybetűket azonosnak tekinti.

    Megoldás : Használja a VLOOKUP, XLOOKUP vagy INDEX MATCH funkciót az EXACT funkcióval kombinálva, amely képes a szöveg esetének megfeleltetésére. A részletes magyarázatokat és képletpéldákat ebben a bemutatóban találja: 5 mód az eset-érzékeny Vlookup elvégzésére az Excelben.

    Új oszlop került beillesztésre vagy eltávolításra a táblázatból

    Sajnálatos módon a VLOOKUP formulák minden alkalommal leállnak, amikor egy új oszlopot törölnek a keresőtáblából vagy hozzáadnak a keresőtáblához. Ez azért történik, mert a VLOOKUP függvény szintaxisa megköveteli a visszatérő oszlop indexszámának meghatározását. Amikor egy új oszlopot adunk hozzá/eltávolítunk a táblázat tömbjéhez, nyilvánvalóan ez az indexszám megváltozik.

    Megoldás : Az INDEX MATCH formula ismét a segítségére siet : ) Az INDEX MATCH segítségével a keresési és visszatérési tartományokat külön-külön adja meg, így annyi oszlopot törölhet vagy illeszthet be, amennyit csak akar, anélkül, hogy aggódnia kellene az összes kapcsolódó formula frissítése miatt.

    A cellahivatkozások megváltoznak a képlet más cellákba történő másolásakor

    A cím a probléma kimerítő magyarázatát adja, ugye?

    Megoldás : Mindig abszolút hivatkozásokat használjunk ($ jellel) a table_array argumentum, pl. $A$2:$C$100 vagy $A:$C. Az F4 billentyű lenyomásával gyorsan válthat a különböző hivatkozási típusok között.

    A VLOOKUP az első talált értéket adja vissza

    Mint már tudja, az Excel VLOOKUP az első talált értéket adja vissza. Kényszerítheti azonban, hogy a 2., 3., 4. vagy bármely más előfordulást hozza, amit csak akar. Van arra is mód, hogy az utolsó egyezést vagy az összes talált egyezést kapja meg.

    Megoldások : Formulapéldák itt találhatók:

    • VLOOKUP és visszaadja az N-edik előfordulást
    • VLOOKUP több érték
    • XLOOKUP képlet az utolsó egyezéshez

    Miért működik a VLOOKUP egyes celláknál, de másoknál nem?

    Amikor a VLOOKUP-képlet néhány cellában helyes adatokat ad vissza, míg másokban #N/A hibát, ennek több oka is lehet.

    1. A táblatömb nincs zárolva

    Tegyük fel, hogy a 2. sorban (mondjuk az E2-ben) van ez a képlet, ami szépen működik:

    =VLOOKUP(D2, A2:B10, 2, FALSE)

    A 3. sorba másolva a képlet a következőre változik:

    =VLOOKUP(D3, A3:B11, 2, FALSE)

    Mivel relatív hivatkozást használnak a table_array , a képlet másolásának relatív pozíciója alapján változik, esetünkben A2:B10-ről A3:B11-re. Tehát, ha a találat a 2. sorban van, akkor nem találja meg!

    Megoldás : Ha egynél több cellára használunk VLOOKUP képletet, akkor mindig zárolja a táblázat tömbjét hivatkozás a $ jellel, például $A$2:$B$10.

    2. A szövegértékek vagy az adattípusok nem egyeznek meg.

    A VLOOKUP hibájának másik gyakori oka a keresési érték és a keresési oszlopban lévő hasonló érték közötti különbség. Egyes esetekben a különbség olyan finom, hogy vizuálisan nehéz észrevenni.

    Megoldás : Ha a VLOOKUP #N/A hibát ad vissza, miközben a keresési értéket egyértelműen látja a keresési oszlopban, és látszólag mindkettő pontosan ugyanúgy van írva, először is meg kell határoznia a probléma gyökerét - a képletet vagy a forrásadatokat.

    Ha meg akarja nézni, hogy a két érték azonos vagy különböző, végezzen közvetlen összehasonlítást:

    =E1=A4

    Ahol E1 a keresési érték, A4 pedig egy azonos érték a keresési oszlopban.

    Ha a képlet FALSE-t ad vissza, az azt jelenti, hogy az értékek valamilyen módon különböznek, bár teljesen egyformának tűnnek.

    Abban az esetben, ha numerikus értékek , a legvalószínűbb ok a szövegként formázott számok.

    Abban az esetben, ha szöveges értékek , a probléma valószínűleg a felesleges szóközökkel van. Ennek ellenőrzéséhez a LEN függvény segítségével állapítsa meg a két karakterlánc teljes hosszát:

    =LEN(E1)

    =LEN(A4)

    Ha az eredményül kapott számok eltérnek (mint az alábbi képernyőképen), akkor megtalálta a hibásat - az extra szóközöket:

    A probléma megoldásához vagy távolítsa el az extra szóközöket, vagy használja ezt az INDEX MATCH TRIM formulát.

    Miért húzza ki a VLOOKUP rossz adatokat?

    Még több oka is lehet annak, hogy a VLOOKUP rossz értéket ad vissza:

    1. Helytelen keresési mód Ha pontos egyezést szeretne, mindenképpen állítsa be a range_lookup Az alapértelmezett érték TRUE, így ha elhagyja ezt az argumentumot, a VLOOKUP feltételezi, hogy közelítő egyezést keres, és a legközelebbi értéket keresi, amely kisebb, mint a keresési érték.
    2. A keresési oszlop nincs rendezve A közelítő egyezéshez VLOOKUP ( range_lookup TRUE-ra van állítva), a helyes működéshez a táblázat tömbjének első oszlopát növekvő sorrendbe kell rendezni, a legkisebbtől a legnagyobbig.
    3. Duplikátumok a keresési oszlopban Ha a keresési oszlop két vagy több duplikált értéket tartalmaz, a VLOOKUP az első talált egyezést adja vissza, ami nem biztos, hogy az, amire számított.
    4. Helytelen visszatérési oszlop Duplán ellenőrizze az indexszámot a 3. argumentumban :)

    VLOOKUP nem működik két lap között

    Először is meg kell jegyezni, hogy a fentebb tárgyalt #N/A, #VALUE és #REF hibák gyakori okai ugyanilyen problémákat okozhatnak, ha egy másik lapról nézünk fel. Ha ez nem így van, nézzük meg a következő pontokat:

    1. Győződjön meg róla, hogy a másik lapra vagy másik munkafüzetre való külső hivatkozás helyes.
    2. Amikor egy Vlookupot készít egy másik munkafüzetből, amelyik zárt pillanatnyilag ellenőrizze, hogy a képlet tartalmazza-e a zárt munkafüzet teljes elérési útvonalát.
    3. Ha VLOOKUP nem tud egy másik munkalapon lévő táblázat tömbjét kiválasztani (azaz amikor a keresési lapon kijelöl egy tartományt, semmi sem jelenik meg a table_array argumentumot a képletben vagy a képletvarázsló megfelelő mezőjében), akkor valószínűleg a két lap az Excel különálló példányaiban van megnyitva, és nem tudnak kommunikálni egymással. További információért lásd: Hogyan határozzuk meg, hogy melyik Excel-fájlok melyik példányban vannak. A hiba kijavításához egyszerűen zárja be az összes Excel-ablakot, majd nyissa meg újra a lapokat/munkafüzeteket ugyanabban a példányban (ez az alapértelmezett viselkedés).

    Hogyan lehet Vlookup hiba nélkül az Excelben

    Ha nem akarja megfélemlíteni a felhasználókat az Excel szabványos hibajelzéseivel, akkor helyette saját felhasználóbarát szöveget jeleníthet meg, vagy üres cellát adhat vissza, ha nem talál semmit. Ezt a VLOOKUP IFERROR vagy IFNA funkcióval történő használatával lehet megtenni.

    Minden hiba felfogása

    Az Excel 2007 és újabb verziókban az IFERROR függvényt használhatja a VLOOKUP-képlet hibaellenőrzésére, és saját szövegét (vagy egy üres karakterláncot) adhat vissza, ha bármilyen hiba észlelésre kerül.

    Például:

    =IFERROR(VLOOKUP(E1, A2:B10, 2, FALSE), "Hoppá, valami elromlott")

    Az Excel 2003 és korábbi programokban ugyanerre a célra az IF ISERROR képletet használhatja:

    =IF(ISERROR(VLOOKUP(E1, A2:B10, 2, FALSE)), "Hoppá, valami rosszul sült el", VLOOKUP(E1, A2:B10, 2, FALSE)))

    További részletekért lásd az IFERROR használata a VLOOKUP programmal az Excelben című részt.

    #N/A hibák kezelése

    Ha csak az #N/A hibákat szeretné befogni, és minden más hibatípust figyelmen kívül hagyni, használja az IFNA függvényt (Excel 2013 és újabb verziókban) vagy az IF ISNA képletet (minden verzióban).

    Például:

    =IFNA(VLOOKUP(E1, A2:B10, 2, FALSE), "Hoppá, nem találtunk egyezést. Kérjük, próbálja újra!")

    =IF(ISNA(VLOOKUP(E1, A2:B10, 2, FALSE)), "Hoppá, nem találtunk egyezést. Kérjük, próbálja újra!", VLOOKUP(E1, A2:B10, 2, FALSE))

    Ennyi volt mára. Remélhetőleg ez a bemutató segít megszabadulni a VLOOKUP hibáktól, és a képletei úgy működnek, ahogyan szeretné.

    Hogyan kell VLOOKUP-ot használni az Excelben - videó bemutató

    Michael Brown elkötelezett technológiai rajongó, aki szenvedélyesen egyszerűsíti a bonyolult folyamatokat szoftvereszközök segítségével. A technológiai iparban szerzett több mint egy évtizedes tapasztalatával a Microsoft Excel és az Outlook, valamint a Google Táblázatok és a Dokumentumok területén fejlesztette tudását. Michael blogja célja, hogy megossza tudását és szakértelmét másokkal, könnyen követhető tippeket és oktatóanyagokat adva a termelékenység és a hatékonyság javításához. Akár tapasztalt szakember, akár kezdő, Michael blogja értékes betekintést és gyakorlati tanácsokat kínál, amelyek segítségével a legtöbbet hozhatja ki ezekből az alapvető szoftvereszközökből.