Съдържание
Вашият VLOOKUP извлича грешни данни или изобщо не може да работи? Този урок показва как можете бързо да отстраните често срещани грешки на VLOOKUP и да преодолеете основните му ограничения.
В няколко предишни статии разгледахме различни аспекти на функцията VLOOKUP в Excel. Ако ни следите отблизо, вече би трябвало да сте експерт в тази област :)
Въпреки това не без основание много специалисти в Excel смятат, че VLOOKUP е една от най-сложните функции на Excel. Тя има множество ограничения, които са източник на различни проблеми и грешки.
В тази статия ще намерите прости обяснения на основните причини за грешки на VLOOKUP, като #N/A, #NAME и #VALUE, както и техните решения и поправки. Ще започнем с най-очевидните причини, поради които VLOOKUP не работи, така че може би е добре да разгледате последователно стъпките за отстраняване на неизправности по-долу.
Отстраняване на грешка #N/A във VLOOKUP
Във формулите VLOOKUP съобщението за грешка #N/A (което означава "не е налично") се показва, когато Excel не може да намери стойност за търсене. Това може да се случи по няколко причини.
1. Стойността за търсене е изписана неправилно
Винаги е добра идея първо да се провери най-очевидното нещо : ) Грешките често се появяват, когато работите с наистина големи масиви от данни, състоящи се от хиляди редове, или когато стойността за търсене се въвежда директно във формулата.
2. #N/A в приблизително съвпадение VLOOKUP
Ако формулата ви търси най-близкото съответствие, ( range_lookup зададен на TRUE или пропуснат), грешката #N/A може да се появи в два случая:
- Стойността за търсене е по-малка от най-малката стойност в масива за търсене.
- Колоната за търсене не е подредена във възходящ ред.
3. #N/A в точно съвпадение VLOOKUP
Ако търсите точно съвпадение ( range_lookup аргумент, зададен на FALSE), грешката #N/A се появява, когато не е намерена стойност, точно равна на стойността на търсене. За повече информация вижте раздел VLOOKUP точно съвпадение срещу приблизително съвпадение.
4. Колоната за търсене не е най-лявата колона на масива от таблици
Едно от най-съществените ограничения на Excel VLOOKUP е, че не може да гледа наляво. Следователно колоната за търсене винаги трябва да бъде най-лявата колона В практиката често забравяме за това и в крайна сметка получаваме грешки #N/A.
Решение : Ако не е възможно да преструктурирате данните си така, че колоната за търсене да е най-лявата колона, можете да използвате функциите INDEX и MATCH заедно като алтернатива на VLOOKUP. Ето един пример за формула: INDEX MATCH формула за търсене на стойности вляво.
5. Числата се форматират като текст
Друг често срещан източник на #N/A грешки във формулите VLOOKUP са числата, форматирани като текст, както в основната, така и в таблицата за търсене.
Обикновено това се случва, когато импортирате данни от външна база данни или ако сте въвели апостроф преди число, за да покажете водещите нули.
Ето най-очевидните индикатори за числа, форматирани като текст:
Решение: Изберете всички проблемни номера, щракнете върху иконата за грешка и изберете Конвертиране в число За повече информация вижте Как да конвертирате текст в число в Excel.
6. Предни или задни интервали
Това е най-малко очевидната причина за грешката на VLOOKUP #N/A, тъй като човешкото око трудно може да забележи тези допълнителни интервали, особено когато работите с големи набори от данни, в които повечето записи са под скрола.
Решение 1: Допълнителни интервали в стойността за търсене
За да осигурите правилната работа на формулата VLOOKUP, обвийте стойността за търсене във функцията TRIM:
=VLOOKUP(TRIM(E1), A2:C10, 2, FALSE)
Решение 2: Допълнителни интервали в колоната за търсене
Ако в колоната за търсене се появят допълнителни интервали, няма лесен начин да се избегнат грешките #N/A във VLOOKUP. Вместо това можете да използвате комбинация от функциите INDEX, MATCH и TRIM като формула за масиви:
=INDEX(B2:B10, MATCH(TRUE, TRIM(A$2:A$10)=TRIM(E1), 0))
Тъй като това е формула за масиви, не забравяйте да натиснете Ctrl + Shift + Enter, за да я завършите правилно (в Excel 365 и Excel 2021, където масивите са естествени, това работи и като обикновена формула).
Съвет: Бърза алтернатива е използването на инструмента Trim Spaces, който за секунди ще премахне излишните интервали както в таблиците за търсене, така и в основните таблици, за да направи формулите VLOOKUP без грешки.
Грешка #VALUE! във формулите VLOOKUP
По принцип Microsoft Excel показва грешката #VALUE!, ако стойността, използвана във формулата, е от грешен тип данни. По отношение на VLOOKUP има два често срещани източника на грешката VALUE!.
1. Стойността на търсенето надвишава 255 символа
Моля, имайте предвид, че VLOOKUP не може да търси стойности, съдържащи повече от 255 символа. Ако стойностите за търсене надхвърлят това ограничение, ще бъде изведена грешка #VALUE!
Решение : Вместо това използвайте формула INDEX MATCH. В нашия случай тази формула работи перфектно:
=INDEX(B2:B7, MATCH(TRUE, INDEX(A2:A7= E1, 0), 0))
2. Не е предоставен пълният път до работната книга за търсене
Ако извличате данни от друга работна книга, трябва да включите пълния път до нея. По-точно, трябва да оградите името на работната книга, включително разширението, в [квадратни скоби] и да посочите името на листа, последвано от възклицателен знак. Ако името на работната книга или името на листа, или и двете, съдържат интервали или каквито и да било неабстрактни символи, пътят трябва да бъде ограден в единични кавички.
Ето каква е структурата на table_array аргумент към Vlookup от друга работна книга:
'[име на работната книга]име на листа'!обхват
Една истинска формула може да изглежда по следния начин:
=VLOOKUP($A$2,'[New Prices.xls]Sheet1'!$B:$D, 3, FALSE)
Горната формула ще търси стойността на A2 в колона B на лист 1 в Нови цени и да върне съответстваща стойност от колона D.
Ако някой елемент от пътя липсва, формулата VLOOKUP няма да работи и ще върне грешка #VALUE (освен ако работната книга за търсене не е отворена в момента).
За повече информация, моля, вижте:
- Как да препратите към друг лист или работна книга в Excel
- Как да направите Vlookup от друга работна книга
3. Аргументът col_index_num е по-малък от 1
Трудно е да си представим ситуация, в която някой умишлено да въведе число, по-малко от 1, за да укаже колоната, от която да се връщат стойности. Но това може да се случи, ако този аргумент се връща от някоя друга функция, вложена във вашата формула VLOOKUP.
Така че, ако col_index_num е по-голямо от 1, формулата ви също ще върне грешката #VALUE!.
Ако col_index_num е по-голям от броя на колоните в масива на таблицата, VLOOKUP генерира грешка #REF!.
Отстраняване на грешка при VLOOKUP #NAME
Това е най-лесният случай - грешката #NAME? се появява, ако случайно сте изписали погрешно името на функцията.
Решението е очевидно - проверете правописа :)
Основните причини за грешки в Excel VLOOKUP
Освен че има доста сложен синтаксис, VLOOKUP има вероятно повече ограничения от всяка друга функция на Excel. Поради тези ограничения една на пръв поглед правилна формула често може да даде резултати, различни от очакваните. По-долу ще намерите решения за няколко типични сценария, при които VLOOKUP се проваля.
VLOOKUP е безразличен към големи и малки букви
Функцията VLOOKUP не различава големината на буквите и счита малките и големите букви за еднакви.
Решение : Използвайте VLOOKUP, XLOOKUP или INDEX MATCH в комбинация с функцията EXACT, която може да съпоставя регистрите на текста. Можете да намерите подробни обяснения и примери за формули в това ръководство: 5 начина да направите Vlookup с отчитане на регистрите в Excel.
В таблицата е вмъкната или премахната нова колона
За съжаление формулите VLOOKUP престават да работят всеки път, когато нова колона бъде изтрита от или добавена към таблицата за търсене. Това се случва, тъй като синтаксисът на функцията VLOOKUP изисква дефиниране на индексния номер на връщаната колона. Когато нова колона бъде добавена към/изтрита от масива на таблицата, очевидно този индексен номер се променя.
Решение : Формулата INDEX MATCH отново идва на помощ : ) С INDEX MATCH определяте диапазоните за търсене и връщане поотделно, така че можете да изтривате или вмъквате колкото колони искате, без да се притеснявате за актуализирането на всяка свързана формула.
Препратките към клетките се променят при копиране на формулата в други клетки
Заглавието дава изчерпателно обяснение на проблема, нали?
Решение : Винаги използвайте абсолютни препратки (със знака $) за table_array например $A$2:$C$100 или $A:$C. Можете бързо да превключвате между различните типове справки, като натиснете клавиша F4.
VLOOKUP връща първата намерена стойност
Както вече знаете, Excel VLOOKUP връща първата намерена стойност. Можете обаче да го накарате да върне втората, третата, четвъртата или всяка друга среща, която искате. Има и начин да получите последното съвпадение или всички намерени съвпадения.
Решения : Примерите за формули са достъпни тук:
- VLOOKUP и връщане на N-тата поява
- VLOOKUP множество стойности
- Формула XLOOKUP за получаване на последното съвпадение
Защо моята VLOOKUP работи за някои клетки, но не и за други?
Когато формулата VLOOKUP връща правилните данни в някои клетки и грешки #N/A в други, причините за това могат да бъдат няколко.
1. Масивът на таблицата не е заключен
Да предположим, че имате тази формула в ред 2 (например в E2), която работи добре:
=VLOOKUP(D2, A2:B10, 2, FALSE)
Когато се копира в ред 3, формулата се променя на:
=VLOOKUP(D3, A3:B11, 2, FALSE)
Тъй като относителната референция се използва за table_array , тя се променя в зависимост от относителната позиция на реда, в който е копирана формулата, в нашия случай от A2:B10 на A3:B11. Така че, ако съответствието е в ред 2, то няма да бъде намерено!
Решение : Когато използвате формула VLOOKUP за повече от една клетка, винаги заключване на масива от таблици препратка със знака $, например $A$2:$B$10.
2. Стойностите на текста или типовете данни не съвпадат
Друга често срещана причина за неуспех на VLOOKUP е разликата между стойността за търсене и подобна стойност в колоната за търсене. В някои случаи разликата е толкова малка, че е трудно да се забележи визуално.
Решение : Когато VLOOKUP връща грешка #N/A, докато ясно виждате стойността на търсенето в колоната за търсене и очевидно двете са изписани по един и същи начин, първото нещо, което трябва да направите, е да определите основната причина за проблема - формулата или изходните данни.
За да проверите дали двете стойности са еднакви или различни, направете директно сравнение по този начин:
=E1=A4
Където E1 е вашата стойност за търсене, а A4 е идентична стойност в колоната за търсене.
Ако формулата върне FALSE, това означава, че стойностите се различават по някакъв начин, въпреки че изглеждат напълно еднакви.
В случай на цифрови стойности , най-възможната причина са числата, форматирани като текст.
В случай на текстови стойности , най-вероятно проблемът е в излишните интервали. За да проверите това, намерете общата дължина на двата низа, като използвате функцията LEN:
=LEN(E1)
=LEN(A4)
Ако получените числа се различават (както на снимката по-долу), значи сте открили виновника - допълнителните интервали:
За да разрешите проблема, премахнете допълнителните интервали или използвайте тази формула INDEX MATCH TRIM като заобиколно решение.
Защо моята VLOOKUP извлича грешни данни?
Възможно е да има още повече причини, поради които VLOOKUP връща грешна стойност:
- Неправилен режим на търсене Ако искате точно съвпадение, не забравяйте да зададете range_lookup По подразбиране е TRUE, така че ако пропуснете този аргумент, VLOOKUP ще приеме, че търсите приблизително съвпадение и ще търси най-близката стойност, която е по-малка от стойността за търсене.
- Колоната за търсене не е сортирана . За приблизително съвпадение с VLOOKUP ( range_lookup TRUE), първата колона в масива на таблицата трябва да бъде сортирана във възходящ ред, от най-малката към най-голямата.
- Дубликати в колоната за търсене Ако колоната за търсене съдържа две или повече дублиращи се стойности, VLOOKUP ще върне първото намерено съвпадение, което може да не е това, което очаквате.
- Неправилна колона за връщане Проверете два пъти номера на индекса в третия аргумент :)
VLOOKUP не работи между два листа
На първо място, трябва да се отбележи, че общите причини за грешки #N/A, #VALUE и #REF, разгледани по-горе, могат да причинят същите проблеми, когато търсите от друг лист. Ако случаят не е такъв, разгледайте следните точки:
- Уверете се, че външната препратка към друг лист или друга работна книга е правилна.
- Когато правите Vlookup от друга работна книга, която е затворен в момента, проверете дали формулата ви съдържа пълния път до затворената работна книга.
- Ако VLOOKUP не можете да изберете масив от таблица в друг работен лист (т.е. когато маркирате диапазон в листа за търсене, в полето table_array аргумент във формулата или в съответното поле на съветника за формули), то най-вероятно двата листа са отворени в отделни инстанции на Excel и не могат да комуникират помежду си. За повече информация вижте Как да определим кои файлове на Excel са в коя инстанция. За да поправите това, просто затворете всички прозорци на Excel и след това отворете отново листата/работните книги в същата инстанция (поведение по подразбиране).
Как да търсите без грешки в Excel
Ако не искате да плашите потребителите си със стандартните обозначения на грешките в Excel, можете вместо това да покажете свой собствен удобен за потребителя текст или да върнете празна клетка, ако не е намерено нищо. Това може да се направи, като се използва VLOOKUP с функцията IFERROR или IFNA.
Улавяне на всички грешки
В Excel 2007 и по-нови версии можете да използвате функцията IFERROR, за да проверите формулата VLOOKUP за грешки и да върнете собствен текст (или празен низ), ако всяка грешка се открива.
Например:
=IFERROR(VLOOKUP(E1, A2:B10, 2, FALSE), "Упс, нещо се обърка")
В Excel 2003 и по-ранни версии можете да използвате формулата IF ISERROR за същата цел:
=IF(ISERROR(VLOOKUP(E1, A2:B10, 2, FALSE)), "Упс, нещо се обърка", VLOOKUP(E1, A2:B10, 2, FALSE))
За повече информация вижте Използване на IFERROR с VLOOKUP в Excel.
Обработка на грешки #N/A
За да уловите само грешки #N/A, като игнорирате всички други типове грешки, използвайте функцията IFNA (в Excel 2013 и по-високи версии) или формулата IF ISNA (във всички версии).
Например:
=IFNA(VLOOKUP(E1, A2:B10, 2, FALSE), "Упс, не е намерено съвпадение. Моля, опитайте отново!")
=IF(ISNA(VLOOKUP(E1, A2:B10, 2, FALSE)), "Опа, не е намерено съвпадение. Моля, опитайте отново!", VLOOKUP(E1, A2:B10, 2, FALSE))
Това е всичко за днес. Надяваме се, че този урок ще ви помогне да се отървете от грешките на VLOOKUP и да накарате формулите си да работят по желания от вас начин.