Съдържание
В този урок ще разгледаме как да използваме функциите 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 формула примери