Turinys
Ar jūsų VLOOKUP ištraukia neteisingus duomenis, ar apskritai negali veikti? Šioje pamokoje parodoma, kaip greitai ištaisyti dažniausiai pasitaikančias VLOOKUP klaidas ir įveikti pagrindinius jos apribojimus.
Keliuose ankstesniuose straipsniuose nagrinėjome įvairius "Excel" VLOOKUP funkcijos aspektus. Jei mus atidžiai sekėte, dabar jau turėtumėte būti šios srities ekspertas :)
Tačiau ne veltui daugelis "Excel" specialistų mano, kad VLOOKUP yra viena sudėtingiausių "Excel" funkcijų. Ji turi daugybę apribojimų, dėl kurių kyla įvairių problemų ir klaidų.
Šiame straipsnyje rasite paprastus pagrindinių VLOOKUP klaidų, tokių kaip #N/A, #NAME ir #VALUE, priežasčių paaiškinimus, taip pat jų sprendimus ir pataisymus. Pradėsime nuo akivaizdžiausių priežasčių, dėl kurių neveikia VLOOKUP, todėl vertėtų iš eilės peržiūrėti toliau pateiktus trikčių šalinimo veiksmus.
#N/A klaidos taisymas VLOOKUP sistemoje
VLOOKUP formulėse klaidos pranešimas #N/A (reiškia "nėra") rodomas, kai "Excel" neranda paieškos reikšmės. Taip gali atsitikti dėl kelių priežasčių.
1. Paieškos reikšmė parašyta neteisingai
Visada verta pirmiausia patikrinti akivaizdžiausius dalykus : ) Klaidų dažnai pasitaiko, kai dirbama su tikrai dideliais duomenų rinkiniais, sudarytais iš tūkstančių eilučių, arba kai paieškos reikšmė įvedama tiesiai į formulę.
2. #N/A pagal apytikslį atitikmenį VLOOKUP
Jei jūsų formulė ieško artimiausio atitikmens, ( range_lookup argumentas TRUE arba praleistas), #N/A klaida gali atsirasti dviem atvejais:
- Paieškos reikšmė yra mažesnė už mažiausią reikšmę paieškos masyve.
- Paieškos stulpelis nerūšiuojamas didėjančia tvarka.
3. #N/A tikslaus atitikmens VLOOKUP
Jei ieškote tikslaus atitikmens ( range_lookup argumentas FALSE), #N/A klaida įvyksta, kai nerandama reikšmė, tiksliai lygi paieškos reikšmei. Daugiau informacijos žr. skyriuje VLOOKUP tikslus atitikimas ir apytikslis atitikimas.
4. Paieškos stulpelis nėra lentelės masyvo kairiausias stulpelis
Vienas svarbiausių "Excel" VLOOKUP apribojimų yra tas, kad jis negali žiūrėti į kairę. Todėl paieškos stulpelis visada turi būti kraštutinis kairysis stulpelis Praktikoje tai dažnai pamirštame ir gauname #N/A klaidų.
Sprendimas : Jei neįmanoma pertvarkyti duomenų taip, kad paieškos stulpelis būtų kairiausias stulpelis, galite naudoti INDEX ir MATCH funkcijas kartu kaip VLOOKUP alternatyvą. Štai formulės pavyzdys: INDEX MATCH formulė reikšmėms kairėje ieškoti.
5. Skaičiai formatuojami kaip tekstas
Kitas dažnas #N/A klaidų šaltinis VLOOKUP formulėse yra skaičiai, suformatuoti kaip tekstas pagrindinėje arba paieškos lentelėje.
Paprastai taip nutinka, kai importuojate duomenis iš išorinės duomenų bazės arba jei prieš skaičių įvedėte apostrofą, kad būtų rodomi nuliai.
Čia pateikiami akivaizdžiausi skaičių, suformatuotų kaip tekstas, rodikliai:
Sprendimas: Pažymėkite visus probleminius numerius, spustelėkite klaidos piktogramą ir pasirinkite Konvertuoti į Skaičius iš kontekstinio meniu. Daugiau informacijos rasite skyriuje Kaip konvertuoti tekstą į skaičių "Excel" programoje.
6. Pradiniai arba galiniai tarpai
Tai mažiausiai akivaizdi VLOOKUP #N/A klaidos priežastis, nes žmogaus akis vargu ar gali pastebėti tuos papildomus tarpus, ypač kai dirbama su dideliais duomenų rinkiniais, kuriuose dauguma įrašų yra žemiau slinkties.
1 sprendimas: papildomi tarpai paieškos reikšmėje
Kad VLOOKUP formulė veiktų teisingai, paieškos reikšmę apvyniokite TRIM funkcija:
=VLOOKUP(TRIM(E1), A2:C10, 2, FALSE)
2 sprendimas: papildomi tarpai paieškos stulpelyje
Jei paieškos stulpelyje atsiranda papildomų tarpų, nėra paprasto būdo, kaip išvengti #N/A klaidų VLOOKUP. Vietoj to galite naudoti INDEX, MATCH ir TRIM funkcijų derinį kaip masyvo formulę:
=INDEX(B2:B10, MATCH(TRUE, TRIM(A$2:A$10)=TRIM(E1), 0))
Kadangi tai yra masyvo formulė, nepamirškite paspausti Ctrl + Shift + Enter, kad ją tinkamai užbaigtumėte (programose "Excel 365" ir "Excel 2021", kuriose masyvų formulės yra natūralios, ši formulė taip pat veikia kaip įprasta formulė).
Patarimas. Greita alternatyva - paleisti "Trim Spaces" įrankį, kuris per kelias sekundes pašalins perteklinius tarpus tiek paieškos, tiek pagrindinėse lentelėse, todėl VLOOKUP formulėse nebus klaidų.
#VALUE! klaida VLOOKUP formulėse
Apskritai "Microsoft Excel" rodo #VALUE! klaidą, jei formulėje naudojama reikšmė yra netinkamo duomenų tipo. Kalbant apie VLOOKUP, yra du dažniausiai pasitaikantys VALUE! klaidos šaltiniai.
1. Paieškos vertė viršija 255 simbolius
Atkreipkite dėmesį, kad VLOOKUP negali ieškoti reikšmių, kuriose yra daugiau nei 255 simboliai. Jei paieškos reikšmės viršija šią ribą, bus rodoma #VALUE! klaida:
Sprendimas : Vietoj to naudokite INDEX MATCH formulę. Mūsų atveju ši formulė veikia puikiai:
=INDEX(B2:B7, MATCH(TRUE, INDEX(A2:A7= E1, 0), 0))
2. Nepateikiamas visas paieškos sąsiuvinio kelias
Jei duomenis traukiate iš kito sąsiuvinio, turite nurodyti visą kelią iki jo. Tiksliau, sąsiuvinio pavadinimą, įskaitant plėtinį, turite įrašyti į [laužtiniuose skliaustuose] ir nurodyti lapo pavadinimą, po kurio rašomas šauktukas. Jei sąsiuvinio pavadinime, lapo pavadinime arba abiejuose pavadinimuose yra tarpų arba bet kokių nelietuviškų simbolių, kelias turi būti įrašytas viengubais kabliataškiais.
Čia pateikiama tokia struktūra table_array argumentas į "Vlookup" iš kito sąsiuvinio:
'[sąsiuvinio pavadinimas]lapo pavadinimas'!range
Tikroji formulė gali būti panaši į šią:
=VLOOKUP($A$2,'[New Prices.xls]Sheet1'!$B:$D, 3, FALSE)
Pagal pirmiau pateiktą formulę bus ieškoma A2 reikšmės 1 lapo B stulpelyje. Naujos kainos sąsiuvinį ir grąžinti atitinkamą D stulpelio reikšmę.
Jei trūksta bet kurio kelio elemento, VLOOKUP formulė neveiks ir bus grąžinta #VALUE klaida (nebent šiuo metu yra atidarytas paieškos sąsiuvinis).
Daugiau informacijos žr:
- Kaip daryti nuorodą į kitą "Excel" lapą ar darbo knygą
- Kaip atlikti "Vlookup" iš kito sąsiuvinio
3. Argumentas col_index_num yra mažesnis nei 1
Sunku įsivaizduoti situaciją, kai kas nors tyčia įvestų skaičių, mažesnį nei 1, norėdamas nurodyti stulpelį, iš kurio bus grąžinamos reikšmės. Tačiau taip gali nutikti, jei šį argumentą grąžina kokia nors kita funkcija, įterpta į jūsų VLOOKUP formulę.
Taigi, jei col_index_num argumentas yra didesnis nei 1, jūsų formulė taip pat grąžins #VALUE! klaidą.
Jei col_index_num yra didesnis už lentelės masyvo stulpelių skaičių, VLOOKUP pateikia #REF! klaidą.
VLOOKUP #NAME klaidos sprendimas
Tai lengviausias atvejis - klaida #NAME? pasirodo, jei netyčia neteisingai parašėte funkcijos pavadinimą.
Sprendimas akivaizdus - patikrinkite rašybą :)
Pagrindinės "Excel" VLOOKUP klaidų priežastys
Be gana sudėtingos sintaksės, VLOOKUP turi daugiau apribojimų nei bet kuri kita "Excel" funkcija. Dėl šių apribojimų iš pažiūros teisinga formulė dažnai gali duoti kitokius rezultatus, nei tikėjotės. Toliau rasite kelių tipinių scenarijų, kai VLOOKUP neveikia, sprendimus.
VLOOKUP neatsižvelgiama į didžiųjų ir mažųjų raidžių skirtumus
Funkcija VLOOKUP neskiria raidžių dydžio ir mažąsias bei didžiąsias raides laiko vienodomis.
Sprendimas : Naudokite VLOOKUP, XLOOKUP arba INDEX MATCH kartu su funkcija EXACT, kuri gali atitikti teksto raidžių atvejus. Išsamius paaiškinimus ir formulių pavyzdžius galite rasti šiame vadovėlyje: 5 būdai, kaip "Excel" programoje atlikti Vlookup, atsižvelgiant į raidžių atvejus.
Lentelėje įterptas arba pašalintas naujas stulpelis
Deja, VLOOKUP formulės nustoja veikti kiekvieną kartą, kai iš paieškos lentelės pašalinamas arba į ją įtraukiamas naujas stulpelis. Taip atsitinka todėl, kad pagal VLOOKUP funkcijos sintaksę reikia nustatyti grąžinamo stulpelio indekso numerį. Kai į lentelės masyvą įtraukiamas arba iš jo pašalinamas naujas stulpelis, šis indekso numeris akivaizdžiai pasikeičia.
Sprendimas : Vėl į pagalbą ateina INDEX MATCH formulė : ) Naudodami INDEX MATCH, atskirai nurodote paieškos ir grąžinimo intervalus, todėl galite ištrinti arba įterpti tiek stulpelių, kiek norite, nesirūpindami dėl kiekvienos susijusios formulės atnaujinimo.
Kopijuojant formulę į kitas ląsteles keičiasi ląstelių nuorodos
Antraštėje pateikiamas išsamus problemos paaiškinimas, tiesa?
Sprendimas : Visada naudokite absoliučias nuorodas (su ženklu $) table_array $A$2:$C$100 arba $A:$C. Skirtingus nuorodų tipus galite greitai perjungti paspausdami klavišą F4.
VLOOKUP grąžina pirmą rastą reikšmę
Kaip jau žinote, "Excel" VLOOKUP grąžina pirmąją rastą reikšmę. Tačiau galite priversti ją grąžinti 2-ąją, 3-iąją, 4-ąją ar bet kurią kitą norimą reikšmę. Taip pat yra būdas gauti paskutinį atitikmenį arba visus rastus atitikmenis.
Sprendimai : Formulės pavyzdžių galima rasti čia:
- VLOOKUP ir grąžinti N-ąjį atvejį
- VLOOKUP kelios reikšmės
- XLOOKUP formulė paskutiniam atitikmeniui gauti
Kodėl mano VLOOKUP veikia vienose ląstelėse, bet neveikia kitose?
Kai VLOOKUP formulė grąžina teisingus duomenis I kai kuriuose langeliuose, o kituose - #N/A klaidas, gali būti kelios galimos priežastys, kodėl taip atsitinka.
1. Lentelės masyvas nėra užrakintas
Tarkime, 2 eilutėje (tarkime, E2) turite šią formulę, kuri puikiai veikia:
=VLOOKUP(D2, A2:B10, 2, FALSE)
Nukopijavus į 3 eilutę, formulė pasikeičia taip:
=VLOOKUP(D3, A3:B11, 2, FALSE)
Kadangi santykinė nuoroda naudojama table_array , ji keičiasi pagal santykinę eilutės, į kurią kopijuojama formulė, padėtį, mūsų atveju iš A2:B10 į A3:B11. Taigi, jei atitikmuo yra 2 eilutėje, jis nebus rastas!
Sprendimas : Naudodami VLOOKUP formulę daugiau nei vienai ląstelei, visada užrakinti lentelės masyvą nuoroda su $ ženklu, pavyzdžiui, $A$2:$B$10.
2. Nesutampa teksto reikšmės arba duomenų tipai
Kita dažna VLOOKUP nesėkmės priežastis - skirtumas tarp jūsų paieškos vertės ir panašios vertės paieškos stulpelyje. Kai kuriais atvejais skirtumas toks nežymus, kad jį sunku pastebėti vizualiai.
Sprendimas : Kai VLOOKUP grąžina #N/A klaidą, nors aiškiai matote paieškos reikšmę paieškos stulpelyje ir, matyt, abi reikšmės parašytos lygiai taip pat, pirmiausia reikia nustatyti pagrindinę problemos priežastį - formulę arba pradinius duomenis.
Norėdami sužinoti, ar abi vertės yra vienodos, ar skirtingos, atlikite tiesioginį palyginimą šiuo būdu:
=E1=A4
Kai E1 yra jūsų paieškos vertė, o A4 yra identiška vertė paieškos stulpelyje.
Jei formulė grąžina FALSE, vadinasi, reikšmės kažkuo skiriasi, nors atrodo visiškai vienodos.
Jei skaitinės vertės , labiausiai tikėtina priežastis yra skaičiai, suformatuoti kaip tekstas.
Jei teksto reikšmės , greičiausiai problema susijusi su tarpų pertekliumi. Norėdami tai patikrinti, naudodami LEN funkciją sužinokite bendrą dviejų eilučių ilgį:
=LEN(E1)
=LEN(A4)
Jei gauti skaičiai skiriasi (kaip toliau pateiktoje ekrano nuotraukoje), vadinasi, kaltininkas - papildomi tarpai:
Norėdami išspręsti šią problemą, pašalinkite papildomus tarpus arba naudokite šią INDEX MATCH TRIM formulę.
Kodėl mano VLOOKUP pateikia neteisingus duomenis?
Gali būti dar daugiau priežasčių, dėl kurių VLOOKUP grąžina neteisingą reikšmę:
- Neteisingas paieškos režimas Jei norite tikslaus atitikmens, būtinai nustatykite range_lookup numatytasis nustatymas yra TRUE, todėl jei šio argumento nepateiksite, VLOOKUP laikys, kad ieškote apytikslio atitikmens, ir ieškos artimiausios reikšmės, kuri yra mažesnė už ieškomąją reikšmę.
- Paieškos stulpelis nėra surūšiuotas . Dėl apytikslio atitikimo VLOOKUP ( range_lookup nustatyta TRUE), pirmasis lentelės masyvo stulpelis turi būti surūšiuotas didėjimo tvarka nuo mažiausio iki didžiausio.
- Dublikatai paieškos stulpelyje Jei paieškos stulpelyje yra dvi ar daugiau pasikartojančių reikšmių, VLOOKUP grąžins pirmą rastą atitikmenį, kuris gali būti ne tas, kurio tikėjotės.
- Neteisingas grąžinimo stulpelis . Dukart patikrinkite indekso numerį 3-iajame argumente :)
VLOOKUP neveikia tarp dviejų lapų
Pirmiausia reikėtų pažymėti, kad pirmiau aptartos bendros #N/A, #VALUE ir #REF klaidų priežastys gali sukelti tokių pačių problemų, kai ieškoma iš kito lapo. Jei taip nėra, atkreipkite dėmesį į toliau pateiktus punktus:
- Įsitikinkite, kad išorinė nuoroda į kitą lapą arba kitą sąsiuvinį yra teisinga.
- Atliekant Vlookup iš kito sąsiuvinio, kuris yra uždarytas šiuo metu patikrinkite, ar jūsų formulėje yra visas kelias į uždarytą sąsiuvinį.
- Jei VLOOKUP negalima pasirinkti lentelės masyvo kitame darbalapyje (t. y. kai paieškos lape paryškinate diapazoną, paieškos lape table_array argumentas formulėje arba atitinkamame formulės vedlio lange), greičiausiai abu lapai atidaryti skirtingose "Excel" instancijose ir negali bendrauti tarpusavyje. Daugiau informacijos rasite skyriuje Kaip nustatyti, kurie "Excel" failai yra kurioje instancijoje. Norėdami tai ištaisyti, tiesiog uždarykite visus "Excel" langus ir vėl atidarykite lapus / sąsiuvinius toje pačioje instancijoje (numatytoji elgsena).
Kaip "Vlookup" be klaidų "Excel
Jei nenorite gąsdinti naudotojų standartiniais "Excel" klaidų užrašais, vietoj jų galite rodyti savo vartotojui patogų tekstą arba grąžinti tuščią ląstelę, jei nieko nerasta. Tai galima padaryti naudojant VLOOKUP su IFERROR arba IFNA funkcija.
Užfiksuokite visas klaidas
"Excel 2007" ir vėlesnėse versijose galite naudoti funkciją IFERROR, kad patikrintumėte, ar VLOOKUP formulėje nėra klaidų, ir grąžintumėte savo tekstą (arba tuščią eilutę), jei bet kokia klaida aptikta.
Pavyzdžiui:
=IFERROR(VLOOKUP(E1, A2:B10, 2, FALSE), "Oops, kažkas nepavyko")
Programoje "Excel 2003" ir ankstesnėse versijose tam pačiam tikslui galite naudoti formulę IF ISERROR:
=IF(ISERROR(VLOOKUP(E1, A2:B10, 2, FALSE)), "Oops, kažkas nepavyko", VLOOKUP(E1, A2:B10, 2, FALSE))
Išsamesnės informacijos rasite skyriuje IFERROR naudojimas su VLOOKUP programoje "Excel".
Klaidų tvarkymas #N/A
Jei norite fiksuoti tik #N/A klaidas, ignoruodami visus kitus klaidų tipus, naudokite funkciją IFNA (programoje "Excel 2013" ir naujesnėse versijose) arba formulę IF ISNA (visose versijose).
Pavyzdžiui:
=IFNA(VLOOKUP(E1, A2:B10, 2, FALSE), "Oops, nerastas atitikmuo. Bandykite dar kartą!")
=IF(ISNA(VLOOKUP(E1, A2:B10, 2, FALSE)), "Oops, nerastas atitikmuo. Bandykite dar kartą!", VLOOKUP(E1, A2:B10, 2, FALSE))
Tikimės, kad ši pamoka padės jums atsikratyti VLOOKUP klaidų ir jūsų formulės veiks taip, kaip norite.