Excel VLOOKUP ei tööta - #N/A ja #VALUE vigade kindlaksmääramine

  • Jaga Seda
Michael Brown

Kas teie VLOOKUP tõmbab valesid andmeid või te ei saa seda üldse tööle? See õpetus näitab, kuidas saate kiiresti parandada tavalisi VLOOKUPi vigu ja ületada selle peamised piirangud.

Mõnes varasemas artiklis uurisime Exceli VLOOKUP-funktsiooni erinevaid aspekte. Kui olete meid tähelepanelikult jälginud, peaksite nüüdseks olema selles valdkonnas ekspert :)

Siiski ei ole põhjuseta, et paljud Exceli spetsialistid peavad VLOOKUPi üheks kõige keerulisemaks Exceli funktsiooniks. Sellel on hulgaliselt piiranguid, mis on erinevate probleemide ja vigade allikaks.

Sellest artiklist leiate lihtsad selgitused VLOOKUP-i vigade, nagu #N/A, #NAME ja #VALUE, peamiste põhjuste kohta, samuti nende lahendused ja parandused. Alustame kõige ilmsematest põhjustest, miks VLOOKUP ei tööta, seega võib olla hea mõte vaadata allpool toodud veaotsingu samme järjekorras.

    #N/A vea parandamine VLOOKUPis

    VLOOKUP-valemites kuvatakse veateade #N/A (mis tähendab "ei ole saadaval"), kui Excel ei leia otsinguväärtust. Sellel võib olla mitu põhjust.

    1. Otsinguväärtus on valesti kirjutatud

    Alati on hea mõte kõigepealt kontrollida kõige ilmsemat asja : ) Tihti tekivad trükivigad, kui töötate tõesti suurte, tuhandetest ridadest koosnevate andmekogumitega või kui otsinguväärtus sisestatakse otse valemisse.

    2. #N/A ligikaudse vaste VLOOKUPis

    Kui teie valem otsib lähima vaste, ( range_lookup argument on seatud TRUE või jäetud välja), võib #N/A viga ilmneda kahel juhul:

    • Otsinguväärtus on väiksem kui väikseim väärtus otsingumassiivis.
    • Otsinguväli ei ole sorteeritud kasvavas järjekorras.

    3. #N/A täpse vaste VLOOKUPis

    Kui otsite täpset vastet ( range_lookup argument on seatud FALSE), tekib #N/A viga, kui otsinguväärtusega täpselt võrdset väärtust ei leita. Lisateavet vt VLOOKUP täpne vaste vs. ligikaudne vaste.

    4. Otsingusammas ei ole tabeli massiivi kõige vasakpoolsem veerg

    Üks Exceli VLOOKUPi olulisemaid piiranguid on see, et see ei saa vaadata vasakule. Järelikult peaks lookup veerg olema alati kõige vasakpoolsem veerg tabeli massiivi. Praktikas unustame selle sageli ära ja jõuame #N/A vigadeni.

    Lahendus : Kui teie andmeid ei ole võimalik ümber struktureerida nii, et otsinguväli oleks kõige vasakpoolsem veerg, võite kasutada VLOOKUPi alternatiivina funktsioone INDEX ja MATCH koos. Siin on valemite näide: INDEX MATCH valem, et otsida väärtusi vasakule.

    5. Numbrid on vormistatud tekstina

    Teine tavaline #N/A vigade allikas VLOOKUP-valemites on tekstina vormindatud numbrid kas põhi- või otsingutabeli sees.

    See juhtub tavaliselt siis, kui impordite andmeid mõnest välisest andmebaasist või kui olete sisestanud numbri ette apostroobi, et näidata eesolevaid nulle.

    Siin on kõige ilmsemad näitajad tekstina vormistatud numbrite kohta:

    Lahendus: Valige kõik probleemsed numbrid, klõpsake vea ikoonil ja valige Teisenda numbriks kontekstmenüüst. Lisateavet leiate jaotisest Kuidas teisendada teksti numbriks Excelis.

    6. Ees- või tagapool olevad tühikud

    See on VLOOKUP #N/A vea kõige vähem ilmne põhjus, sest inimsilm suudab neid lisavälju vaevalt märgata, eriti kui töötate suurte andmekogumitega, kus enamik kirjeid on allapoole kerimist.

    Lahendus 1: lisaväljad otsinguväärtuses

    Et tagada oma VLOOKUP-valemi korrektne töö, mähkige otsinguväärtus TRIM-funktsiooniga:

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

    Lahendus 2: lisaväljad otsingusammas

    Kui otsingusammas esinevad lisaväljad, ei ole lihtne viis VLOOKUPis #N/A vigade vältimiseks. Selle asemel saate kasutada massiivi valemina funktsioonide INDEX, MATCH ja TRIM kombinatsiooni:

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

    Kuna tegemist on massiivi valemiga, ärge unustage vajutada Ctrl + Shift + Enter, et seda korralikult täita (Excel 365 ja Excel 2021, kus massiivid on algupärased, töötab see ka tavalise valemina).

    Vihje. Kiire alternatiiv on kasutada tööriista Trim Spaces, mis eemaldab sekunditega liigsed tühikud nii otsingu- kui ka põhitabelitest, muutes teie VLOOKUP-valemid veavabaks.

    #VALUE! viga VLOOKUP valemites

    Üldiselt kuvab Microsoft Excel vea #VALUE!, kui valemis kasutatav väärtus on vale andmetüübiga. VLOOKUPi puhul on kaks tavalist VALUE! vea allikat.

    1. Otsingu väärtus ületab 255 tähemärki

    Pidage meeles, et VLOOKUP ei saa otsida väärtusi, mis sisaldavad rohkem kui 255 tähemärki. Kui teie otsinguväärtused ületavad seda piirangut, kuvatakse #VALUE! viga:

    Lahendus : Kasutage selle asemel valemit INDEX MATCH. Meie puhul töötab see valem suurepäraselt:

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

    2. Täielik tee otsingu töövihiku juurde ei ole esitatud

    Kui tõmbate andmeid teisest töövihikust, peate lisama selle täieliku tee. Täpsemalt, peate lisama töövihiku nime koos laiendiga [nurksulgudesse] ja määrama lehe nime, millele järgneb hüüumärk. Kui töövihiku nimi või lehe nimi või mõlemad sisaldavad tühikuid või muid kui tähestikulisi märke, tuleb tee lisada lihtsatesse jutumärkidesse.

    Siin on struktuur table_array argument Vlookup'ile teisest töövihikust:

    '[töövihiku nimi]lehe nimi'!vahemik

    Tegelik valem võiks välja näha umbes nii:

    =VLOOKUP($A$2,'[New Prices.xls]Sheet1'!$B:$D, 3, FALSE)

    Ülaltoodud valemiga otsitakse A2 väärtust lehe B veerus Sheet1 tabelis Uued hinnad töövihik ja tagastab sobiva väärtuse veerust D.

    Kui mõni element teekonnast puudub, ei tööta teie VLOOKUP-vormel ja annab tagasi vea #VALUE (välja arvatud juhul, kui otsingu töövihik on hetkel avatud).

    Lisateabe saamiseks vt:

    • Kuidas viidata Exceli teisele lehele või töövihikule
    • Kuidas teha Vlookup'i teisest töövihikust

    3. Argument col_index_num on väiksem kui 1.

    On raske ette kujutada olukorda, kus keegi sisestab tahtlikult numbri, mis on väiksem kui 1, et määrata veerg, millest väärtused tagastada. Kuid see võib juhtuda, kui see argument tagastatakse mõne teise funktsiooni poolt, mis on teie VLOOKUP-valemisse sisse ehitatud.

    Niisiis, kui col_index_num argument on suurem kui 1, annab teie valem tagasi ka vea #VALUE!.

    Kui col_index_num on suurem kui tabeli massiivi veergude arv, annab VLOOKUP vea #REF!.

    VLOOKUP #NAME vea lahendamine

    See on kõige lihtsam juhtum - #NAME? viga ilmub, kui olete kogemata funktsiooni nime valesti kirjutanud.

    Lahendus on ilmselge - kontrollige õigekirja :)

    Peamised vigade põhjused Excel VLOOKUPis

    Lisaks sellele, et VLOOKUPil on üsna keeruline süntaks, on tal vaieldamatult rohkem piiranguid kui ühelgi teisel Exceli funktsioonil. Nende piirangute tõttu võib näiliselt õige valem sageli anda oodatust erinevaid tulemusi. Allpool leiate lahendused mõnele tüüpilisele stsenaariumile, kui VLOOKUP ebaõnnestub.

    VLOOKUP on suur- ja väiketähtede suhtes tundmatu

    Funktsioon VLOOKUP ei tee vahet tähtede vahel ja käsitleb väikseid ja suuri tähti identsetena.

    Lahendus : Kasutage VLOOKUP, XLOOKUP või INDEX MATCH koos funktsiooniga EXACT, mis suudab sobitada teksti suurust. Üksikasjalikud selgitused ja valemite näited leiate sellest juhendmaterjalist: 5 viisi, kuidas teha Excelis suurustundlikku Vlookup'i.

    Tabelisse lisati või eemaldati uus veerg

    Kahjuks lakkavad VLOOKUP-valemid töötamast iga kord, kui tabelist kustutatakse või tabelisse lisatakse uus veerg. See juhtub seetõttu, et VLOOKUP-funktsiooni süntaks nõuab tagastatava veeru indeksinumbri määratlemist. Kui tabelimassiivi lisatakse/eemaldatakse uus veerg, muutub ilmselt see indeksinumber.

    Lahendus : INDEX MATCH valem tuleb jälle appi : ) INDEX MATCHi abil määrate otsingu- ja tagastusvahemikud eraldi, nii et saate vabalt kustutada või lisada nii palju veerge kui soovite, muretsemata iga seotud valemi uuendamise pärast.

    Valemi kopeerimisel teistesse lahtritesse muutuvad lahtriviited

    Pealkiri annab ammendava selgituse probleemi kohta, eks?

    Lahendus : Kasutage alati absoluutseid viiteid (koos $ märgiga), et kasutada table_array argument, nt $A$2:$C$100 või $A:$C. Erinevate viitetüüpide vahel saab kiiresti vahetada, vajutades klahvi F4.

    VLOOKUP tagastab esimese leitud väärtuse

    Nagu te juba teate, annab Excel VLOOKUP tagasi esimese leitud väärtuse. Te võite aga sundida seda tooma 2., 3., 4. või mis tahes muud esinemist, mida soovite. Samuti on võimalik saada viimane kokkulangevus või kõik leitud kokkulangevused.

    Lahendused : Valemi näited on saadaval siin:

    • VLOOKUP ja tagastab N-nda esinemise
    • VLOOKUP mitu väärtust
    • XLOOKUP valem, et saada viimane vaste

    Miks minu VLOOKUP töötab mõnede lahtrite puhul, kuid teiste puhul mitte?

    Kui teie VLOOKUP-valem tagastab õiged andmed I mõnedes lahtrites ja #N/A vead teistes, võib olla mitu võimalikku põhjust, miks see juhtub.

    1. Tabeli massiivi ei ole lukustatud

    Oletame, et teil on see valem 2. reas (näiteks E2), mis töötab kenasti:

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

    Kui see kopeeritakse reale 3, muutub valem järgmiselt:

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

    Kuna suhtelist viidet kasutatakse table_array , muutub see vastavalt selle rea suhtelisele positsioonile, kuhu valem kopeeritakse, meie puhul A2:B10-st A3:B11-ni. Seega, kui vaste on reas 2, siis seda ei leita!

    Lahendus : Kui kasutate VLOOKUP valemit rohkem kui ühe lahtri jaoks, siis alati lukustada tabeli massiivi viide $-märgiga nagu $A$2:$B$10.

    2. Teksti väärtused või andmetüübid ei vasta üksteisele

    Teine tavaline põhjus VLOOKUPi ebaõnnestumiseks on erinevus teie otsinguväärtuse ja sarnase väärtuse vahel otsingusammas. Mõnel juhul on erinevus nii väike, et seda on raske visuaalselt märgata.

    Lahendus : Kui VLOOKUP tagastab vea #N/A, kuigi te näete selgelt otsinguväärtust otsingusammas ja ilmselt on mõlemad täpselt samad, peate kõigepealt kindlaks tegema probleemi algpõhjuse - valemi või lähteandmed.

    Et näha, kas need kaks väärtust on samad või erinevad, tehke otsene võrdlus sellisel viisil:

    =E1=A4

    Kus E1 on teie otsinguväärtus ja A4 on identne väärtus otsingusammas.

    Kui valem tagastab FALSE, tähendab see, et väärtused erinevad mingil viisil, kuigi need näevad välja täiesti sarnased.

    Juhul kui numbrilised väärtused , kõige tõenäolisem põhjus on tekstina vormistatud numbrid.

    Juhul kui tekstiväärtused , siis tõenäoliselt on probleemiks liigsed tühikud. Selle kontrollimiseks leidke kahe stringi kogupikkus, kasutades funktsiooni LEN:

    =LEN(E1)

    =LEN(A4)

    Kui saadud numbrid on erinevad (nagu alloleval ekraanipildil), siis olete leidnud süüdlase - liigsed tühikud:

    Probleemi lahendamiseks eemaldage kas lisaväljad või kasutage seda INDEX MATCH TRIM valemit.

    Miks minu VLOOKUP tõmbab valesid andmeid?

    Võib olla veelgi rohkem põhjusi, miks teie VLOOKUP tagastab vale väärtuse:

    1. Vale otsingurežiim Kui soovite täpset vastet, siis seadistage kindlasti parameeter range_lookup argument FALSE. Vaikimisi on TRUE, nii et kui jätate selle argumendi kasutamata, eeldab VLOOKUP, et otsite ligikaudset vastet ja otsib lähimat väärtust, mis on otsinguväärtusest väiksem.
    2. Otsingu veerg ei ole sorteeritud . ligikaudse vaste VLOOKUP ( range_lookup seatud TRUE), peab tabeli massiivi esimene veerg olema sorteeritud kasvavas järjekorras, väikseimast suurimani.
    3. Duplikaadid otsingusarjas Kui otsingusammas sisaldab kahte või enamat dubleerivat väärtust, tagastab VLOOKUP esimese leitud vaste, mis ei pruugi olla see, mida te ootate.
    4. Vale tagastussammas Kontrollige kahekordselt indeksinumbrit 3. argumendis :)

    VLOOKUP ei tööta kahe lehe vahel

    Kõigepealt tuleb märkida, et eespool käsitletud #N/A, #VALUE ja #REF vigade tavalised põhjused võivad põhjustada samu probleeme ka teiselt lehelt ülespoole vaadates. Kui see ei ole nii, siis vaadake järgmisi punkte:

    1. Veenduge, et väline viide teisele lehele või teisele töövihikule on õige.
    2. Kui teeme Vlookup'i teisest töövihikust, mis on suletud hetkel, kontrollige, et teie valem sisaldab suletud töövihiku täielikku teed.
    3. Kui VLOOKUP ei saa valida teise töölehe tabeli massiivi (s.t. kui te tõstate vahemiku esile otsingulehel, ei ilmu midagi välja table_array argument valemis või valemivõti vastavas lahtris), siis tõenäoliselt on need kaks lehte avatud Exceli eri instantsides ja nad ei saa omavahel suhelda. Lisateavet leiate jaotisest Kuidas määrata, millised Exceli failid on millises instantsis. Selle parandamiseks sulgege lihtsalt kõik Exceli aknad ja seejärel avage lehed/töövihikud uuesti samas instantsis (vaikimisi käitumine).

    Kuidas Vlookup ilma vigadeta Excelis

    Kui te ei soovi oma kasutajaid Exceli standardsete veamärkustega hirmutada, võite selle asemel kuvada oma kasutajasõbraliku teksti või tagastada tühja lahtri, kui midagi ei leita. Seda saab teha, kasutades VLOOKUPi koos IFERROR või IFNA funktsiooniga.

    Püüa kõik vead kinni

    Excel 2007 ja uuemates versioonides saate kasutada funktsiooni IFERROR, et kontrollida VLOOKUP-valemit vigade suhtes ja tagastada oma teksti (või tühja stringi), kui mis tahes viga avastatakse.

    Näiteks:

    =IFERROR(VLOOKUP(E1, A2:B10, 2, FALSE), "Oops, midagi läks valesti")

    Excel 2003 ja varasemates programmides saate samal eesmärgil kasutada valemit IF ISERROR:

    =IF(ISERROR(VLOOKUP(E1, A2:B10, 2, FALSE)), "Oops, midagi läks valesti", VLOOKUP(E1, A2:B10, 2, FALSE))

    Lisateavet leiate jaotisest IFERRORi kasutamine VLOOKUPiga Excelis.

    Käsitleda #N/A vigu

    Et püüda ainult #N/A vigu, ignoreerides kõiki teisi veatüüpe, kasutage funktsiooni IFNA (Excel 2013 ja uuemad versioonid) või valemit IF ISNA (kõik versioonid).

    Näiteks:

    =IFNA(VLOOKUP(E1, A2:B10, 2, FALSE), "Ups, ei leitud ühtegi vastet. Palun proovige uuesti!")

    =IF(ISNA(VLOOKUP(E1, A2:B10, 2, FALSE)), "Oops, ei leitud ühtegi vastet. Palun proovige uuesti!", VLOOKUP(E1, A2:B10, 2, FALSE))

    See on kõik tänaseks päevaks. Loodetavasti aitab see õpetus teil vabaneda VLOOKUP-i vigadest ja teie valemid töötavad nii, nagu soovite.

    Kuidas VLOOKUP Excelis - videoõpetus

    Michael Brown on pühendunud tehnoloogia entusiast, kelle kirg on tarkvaratööriistade abil keerukate protsesside lihtsustamine. Rohkem kui kümneaastase kogemusega tehnoloogiatööstuses on ta lihvinud oma oskusi Microsoft Excelis ja Outlookis, samuti Google Sheetsis ja Docsis. Michaeli ajaveebi eesmärk on jagada oma teadmisi ja teadmisi teistega, pakkudes hõlpsasti järgitavaid näpunäiteid ja õpetusi tootlikkuse ja tõhususe parandamiseks. Olenemata sellest, kas olete kogenud professionaal või algaja, pakub Michaeli ajaveebi väärtuslikke teadmisi ja praktilisi nõuandeid nende oluliste tarkvaratööriistade maksimaalseks kasutamiseks.