Excel IFERROR & VLOOKUP - капан #N/A и други грешки

  • Споделя Това
Michael Brown

В този урок ще разгледаме как да използваме функциите IFERROR и VLOOKUP заедно, за да улавяме и обработваме различни грешки. Освен това ще научите как да правите последователни VLOOKUP в Excel, като вложите няколко функции IFERROR една в друга.

Excel VLOOKUP и IFERROR - тези две функции могат да бъдат доста трудни за разбиране поотделно, да не говорим, когато са комбинирани. В тази статия ще намерите няколко лесни за проследяване примера, които се отнасят до често срещани употреби и ясно илюстрират логиката на формулите.

Ако нямате голям опит с функциите IFERROR и VLOOKUP, може би е добре първо да се запознаете с основите им, като следвате горните връзки.

    Формула IFERROR VLOOKUP за обработка на #N/A и други грешки

    Когато Excel Vlookup не успее да намери стойност за търсене, той изхвърля грешка #N/A, като тази:

    В зависимост от бизнес нуждите си може да искате да замаскирате грешката със собствен текст, нула или празна клетка.

    Пример 1. IFERROR с формула VLOOKUP за заместване на грешки със собствен текст

    Ако желаете да замените стандартния запис на грешка с потребителски текст, обвийте формулата VLOOKUP в IFERROR и въведете какъвто искате текст във втория аргумент ( value_if_error ), например "Не е намерен":

    IFERROR(VLOOKUP( ... ), "Не е намерен")

    Със стойността за търсене в B2 в таблицата Main и диапазона за търсене A2:B4 в таблицата Lookup формулата придобива следната форма:

    =IFERROR(VLOOKUP(B2,'Lookup table'!$A$2:$B$5, 2, FALSE), "Not found")

    Снимката на екрана по-долу показва нашата Excel IFERROR VLOOKUP формула в действие:

    Резултатът изглежда много по-разбираем и не толкова плашещ, нали?

    По подобен начин можете да използвате INDEX MATCH заедно с IFERROR:

    =IFERROR(INDEX('Lookup table'!$B$2:$B$5,MATCH(B2,'Lookup table'!$A$2:$A$5,0)), "Not found")

    Формулата IFERROR INDEX MATCH е особено полезна, когато искате да изтеглите стойности от колона, която се намира вляво от колоната за търсене (ляво търсене), и да върнете свой собствен текст, когато не е намерен нищо.

    Пример 2. IFERROR с VLOOKUP за връщане на празно място или 0, ако не е намерено нищо

    Ако не искате да показвате нищо, когато стойността за търсене не е намерена, накарайте IFERROR да покаже съобщение празен низ (""):

    IFERROR(VLOOKUP( ... ),"")

    В нашия пример формулата е следната:

    =IFERROR(VLOOKUP(B2,'Lookup table'!$A$2:$B$5, 2, FALSE), "")

    Както можете да видите, тя не връща нищо, когато стойността за търсене не е в списъка за търсене.

    Ако искате да замените грешката с нулева стойност , поставете 0 в последния аргумент:

    =IFERROR(VLOOKUP(B2,'Lookup table'!$A$2:$B$5, 2, FALSE), 0)

    Предупреждение! Функцията IFERROR на Excel улавя всички видове грешки, а не само #N/A. Дали е добра или лоша? Всичко зависи от целта ви. Ако искате да прикриете всички възможни грешки, IFERROR Vlookup е правилният начин. Но в много ситуации това може да е неразумна техника.

    Например, ако сте създали именуван диапазон за данните от таблицата си и сте изписали грешно това име във формулата си за Vlookup, IFERROR ще улови грешка #NAME? и ще я замени с "Not found" (Не е намерено) или с друг текст, който предоставите. В резултат на това може никога да не разберете, че формулата ви дава грешни резултати, освен ако сами не забележите печатната грешка. В такъв случай по-разумен подход би бил улавянето само на грешки #N/A.За тази цел използвайте формулата IFNA Vlookkup в Excel 2013 и по-нови версии, IF ISNA VLOOKUP във всички версии на Excel.

    Изводът е: бъдете много внимателни, когато избирате спътник за вашата формула VLOOKUP :)

    Гнездо IFERROR в рамките на VLOOKUP, за да намирате винаги нещо

    Представете си следната ситуация: търсите определена стойност в списък и не я намирате. Какви възможности имате? Или да получите грешка N/A, или да покажете собствено съобщение. Всъщност има и трета възможност - ако основният ви vlookup се препъне, тогава потърсете нещо друго, което със сигурност е там!

    Ако доразвием примера, нека създадем някакъв вид табло за управление за нашите потребители, което да им показва вътрешния номер на конкретен офис. Нещо подобно:

    И така, как да изтеглите разширението от колона B въз основа на номера на офиса в D2? С тази обикновена формула Vlookup:

    =VLOOKUP($D$2,$A$2:$B$7,2,FALSE)

    И това ще работи добре, стига потребителите ви да въведат валиден номер в D2. Но какво да правим, ако потребителят въведе номер, който не съществува? В този случай нека той се обади в централния офис! За тази цел вградете горната формула в стойност аргумент на IFERROR, и поставете друг Vlookup в value_if_error аргумент.

    Пълната формула е малко дълга, но работи перфектно:

    =IFERROR(VLOOKUP("офис"&$D$2,$A$2:$B$7,2,FALSE),VLOOKUP("централен офис",$A$2:$B$7,2,FALSE))

    Ако номерът на офиса е намерен, потребителят получава съответния вътрешен номер:

    Ако номерът на офиса не е намерен, се показва вътрешният номер на централния офис:

    За да направите формулата малко по-компактна, можете да използвате друг подход:

    Първо, проверете дали числото в D2 присъства в колоната за търсене (моля, обърнете внимание, че сме задали col_index_num на 1, за да може формулата да потърси и върне стойност от колона А): VLOOKUP(D2,$A$2:$B$7,1,FALSE)

    Ако посоченият номер на офис не бъде намерен, тогава се търси низът "централен офис", който със сигурност е в списъка за търсене. За тази цел обвивате първата функция VLOOKUP в IFERROR и вмъквате цялата тази комбинация в друга функция VLOOKUP:

    =VLOOKUP(IFERROR(VLOOKUP(D2,$A$2:$B$7,1,FALSE), "централен офис"),$A$2:$B$7,2)

    Малко по-различна формула, но същият резултат:

    Но каква е причината да търсите "централен офис", може би ще ме попитате. Защо не предоставите директно вътрешния номер в IFERROR? Защото вътрешният номер може да се промени в някакъв момент в бъдещето. Ако това се случи, ще трябва да актуализирате данните си само веднъж в изходната таблица, без да се притеснявате за актуализирането на всяка от формулите VLOOKUP.

    Как да правите последователни VLOOKUP в Excel

    В ситуации, когато трябва да извършите т.нар. последователен или с верига Vlookups в Excel в зависимост от това дали предишното търсене е било успешно или неуспешно, вложете две или повече функции IFERROR, за да стартирате Vlookups един по един:

    IFERROR(VLOOKUP( ... ), IFERROR(VLOOKUP( ... ), IFERROR(VLOOKUP( ... ), "Не е намерен")))

    Формулата работи със следната логика:

    Ако първият VLOOKUP не намери нищо, първият IFERROR улавя грешка и изпълнява друг VLOOKUP. Ако вторият VLOOKUP не успее, вторият IFERROR улавя грешка и изпълнява трети VLOOKUP и т.н. Ако всички Vlookups се препънат, последният IFERROR връща вашето съобщение.

    Тази вложена формула IFERROR е особено полезна, когато трябва да търсите в няколко листа както е показано в примера по-долу.

    Да речем, че имате три списъка с еднородни данни в три различни работни листа (номера на офиси в този пример) и искате да получите разширение за определен номер.

    Ако приемем, че стойността за търсене е в клетка А2 в текущия лист, а диапазонът за търсене е А2:В5 в 3 различни работни листа (север, юг и запад), следната формула работи безотказно:

    =IFERROR(VLOOKUP(A2,North!$A$2:$B$5,2,FALSE), IFERROR(VLOOKUP(A2,South!$A$2:$B$5,2,FALSE), IFERROR(VLOOKUP(A2,West!$A$2:$B$5,2,FALSE), "Not found"))

    И така, нашата формула "верижни Vlookups" търси в три различни листа в реда, в който сме ги вложили във формулата, и въвежда първото намерено съответствие:

    Това е начинът за използване на IFERROR с VLOOKUP в Excel. Благодаря ви, че прочетохте, и се надявам да се видим в нашия блог следващата седмица!

    Налични изтегляния

    Excel IFERROR VLOOKUP формула примери

    Майкъл Браун е отдаден технологичен ентусиаст със страст към опростяване на сложни процеси с помощта на софтуерни инструменти. С повече от десетилетие опит в технологичната индустрия, той е усъвършенствал уменията си в Microsoft Excel и Outlook, както и в Google Sheets и Docs. Блогът на Майкъл е посветен на споделянето на неговите знания и опит с други, предоставяйки лесни за следване съвети и уроци за подобряване на продуктивността и ефективността. Независимо дали сте опитен професионалист или начинаещ, блогът на Michael предлага ценни прозрения и практически съвети за извличане на максимума от тези основни софтуерни инструменти.