Tartalomjegyzék
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:
- 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.
- 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.
- 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.
- 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:
- Győződjön meg róla, hogy a másik lapra vagy másik munkafüzetre való külső hivatkozás helyes.
- 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.
- 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é.