Съдържание
В урока се разглеждат практическите приложения на функцията ISERROR на Excel и се показва как да се тестват различни формули за грешки.
Когато напишете формула, която Excel не разбира или не може да изчисли, той ви обръща внимание на проблема, като показва съобщение за грешка. Функцията ISERROR може да ви помогне да уловите грешките и да предоставите алтернатива, когато бъде открита грешка.
Функция ISERROR в Excel
Функцията ISERROR на Excel улавя всички видове грешки, включително #CALC!, #DIV/0!, #N/A, #NAME?, #NUM!, #NULL!, #REF!, #VALUE! и #SPILL!. Резултатът е булева стойност: TRUE, ако е открита грешка, FALSE в противен случай.
Функцията е налична във всички версии на Excel от 2000 до 2021 и Excel 365.
Синтаксисът на функцията ISERROR е прост:
ISERROR(стойност)Къде: стойност е стойността на клетката или формулата, която ще бъде проверена за грешки.
Формула ISERROR на Excel
За да създадете формулата ISERROR в нейната най-проста форма, въведете препратка към клетката, която искате да проверите за грешки. Например:
=ISERROR(A2)
В случай че бъде открита грешка, ще получите TRUE. Ако в тестваната клетка няма грешка, ще получите FALSE:
Формула IF ISERROR в Excel
За да върнете персонализирано съобщение или да извършите различно изчисление при възникване на грешка, използвайте ISERROR заедно с функцията IF. Общата формула изглежда по следния начин:
IF(ISERROR( формула (...), text_or_calculation_if_error , формула ())Преведена на човешки език, тя гласи: ако основната формула доведе до грешка, покажете посочения текст или изпълнете друго изчисление, в противен случай върнете нормалния резултат от формулата.
В изображението по-долу разделянето на общата сума на количеството води до няколко грешки в Цена колона:
За да замените всички различни кодове за грешки с потребителски текст, можете да използвате следната формула IF ISERROR:
=IF(ISERROR(A2/B2), "Unknown", A2/B2)
В Excel 2007 и по-нови версии същият резултат може да се постигне с помощта на вградената функция IFERROR:
=IFERROR(A2/B2, "Unknown")
Трябва да се отбележи, че формулата IFERROR работи малко по-бързо, защото извършва само веднъж изчислението на A2/B2. Докато IF ISERROR го изчислява два пъти - първо, за да види дали генерира грешка, и след това отново, ако тестът е FALSE.
IF ISERROR VLOOKUP формула
Използването на ISERROR с VLOOKUP всъщност е частен случай на формулата IF ISERROR, разгледана по-горе. Когато функцията VLOOKUP не може да намери стойността за търсене или не успее по друга причина, показвате персонализирано текстово съобщение, като използвате този синтаксис:
IF(ISERROR(VLOOKUP(...)), " custom_text ", VLOOKUP(...))За този пример нека изтеглим времената от таблицата за търсене (D3:E10) в основната таблица (A3:B15). Ако стойността за търсене (името на участника) не съществува в таблицата за търсене, ще върнем "Not qualified" (Не отговаря на изискванията).
=IF(ISERROR(VLOOKUP(A3, $D$3:$E$10, 2, FALSE)), "Не отговаря на изискванията", VLOOKUP(A3, $D$3:$E$10, 2, FALSE))
Съвет. Ако искате да покажете потребителски текст само когато стойността за търсене не е намерена (грешка #N/A), като се игнорират други грешки, тогава използвайте формулата IFNA VLOOKUP в Excel 2013 и по-нови версии или IF ISNA VLOOKUP в по-стари версии.
IF ISERROR INDEX MATCH формула
Когато извършвате търсене с помощта на комбинацията INDEX MATCH (или формулата INDEX XMATCH в Excel 365), можете да улавяте и обработвате всички възможни грешки, като използвате същата техника - функцията ISERROR проверява за грешки и IF извежда зададения текст при поява на грешка.
IF(ISERROR(INDEX ( return_column , MATCH ( lookup_value , lookup_column , 0)))), " custom_text ", INDEX ( return_column , MATCH ( lookup_value , lookup_column , 0)))Да предположим, че таблицата за търсене съдържа времена в първата колона. Тъй като VLOOKUP не може да погледне наляво, използваме формулата INDEX MATCH, за да извлечем времената от колона D:
=INDEX($D$3:$D$10, MATCH(A3, $E$3:$E$10, 0))
След това го вмъквате в гореспоменатата обща формула, за да замените хванатите грешки с какъвто искате текст:
=IF(ISERROR(INDEX($D$3:$D$10, MATCH(A3, $E$3:$E$10, 0)), "Not qualified", INDEX($D$3:$D$10, MATCH(A3, $E$3:$E$10, 0))
Забележка. Както и при формулата IF ISERROR VLOOKUP, по-разумно е да улавяте само грешки #N/A и да не прикривате потенциални проблеми със самата формула. За тази цел обвийте формулата си INDEX MATH в IFNA в Excel 2013 и по-нови версии или IF ISNA в по-ранни версии.
Ако е грешка Формула Да/Не
Във всички предишни примери IF ISERROR връща резултата от основната формула, ако не е грешка. Тя обаче може да работи и по друг начин - да връща нещо, ако е грешка, и нещо друго, ако няма грешка.
IF(ISERROR( формула (...)), " text_if_error ", " text_if_no_error ")В нашата примерна съвкупност от данни, да предположим, че не се интересувате от точните времена, а просто искате да знаете кои участници от група А са квалифицирани и кои не са. За да направите това, използвайте функцията MATCH, за да сравните името в колона А със списъка на квалифицираните участници в колона D и след това подайте резултатите към ISERROR. Ако името не е налично в колона D (MATCH връща грешка), получетеАко името се появи в колона D (без грешка), върнете "Да" или "Квалифициран".
=IF(ISERROR(MATCH(A3, $D$3:$D$10, 0)), "Не", "Да" )
Как да преброите броя на грешките
За да получите броя на грешките в определена колона, трябва да проверите диапазон, а не само една клетка. За целта "подайте" целевия диапазон към ISERROR и превърнете върнатите булеви стойности в 1 и 0, като използвате двойния еднозначен оператор (--). Функцията SUM или SUMPRODUCT може да събере числата и да даде крайния резултат.
Например:
=SUM(--ISERROR(C2:C10))
Моля, обърнете внимание, че това работи като обикновена формула само в Excel 365 и Excel 2021, които поддържат динамични масиви. В Excel 2019 и по-ранни версии трябва да натиснете Ctrl + Shift + Enter, за да създадете формула за масив (не въвеждайте къдрави скоби ръчно, това няма да работи!):
{=SUM(--ISERROR(C2:C10))}
Като алтернатива можете да използвате функцията SUMPRODUCT, която обработва масиви по естествен начин, така че формулата може да бъде завършена с обичайния клавиш Enter във всички версии:
=SUMPRODUCT(--ISERROR(C2:C10))
Разлика между ISERROR и IFERROR в Excel
И двете функции ISERROR и IFERROR се използват за улавяне и обработка на грешки в Excel. Разликата е следната:
- В чистия си вид ISERROR просто проверява дали стойността е грешка или не. Той е наличен във всички версии на Excel.
- Функцията IFERROR е предназначена за потискане или прикриване на грешки - когато се открие грешка, тя връща друга стойност, която сте посочили. Тя е налична в Excel 2007 и по-нови версии.
На пръв поглед IFERROR изглежда като съкратена алтернатива на формулата IF ISERROR. При по-внимателно вглеждане обаче можете да забележите разликата:
- IFERROR ви позволява да посочите само value_if_error Ако няма грешка, винаги се връща резултатът от тестваната стойност/формула.
- IF ISERROR осигурява по-голяма гъвкавост и ви позволява да се справяте и с двете ситуации - какво трябва да се случи, ако има грешка, и какво, ако няма грешка.
За да илюстрирате по-добре този въпрос, разгледайте следните формули:
=IFERROR(A1, "Грешка в изчисленията")
=IF(ISERROR(A1), "Грешка в изчисленията", A1)
Тези две формули са еквивалентни - и двете проверяват стойност, зададена от формулата в А1, и връщат "Грешка в изчислението", ако е грешка, а в противен случай - връщат стойността.
Но какво става, ако искате да извършите някакво изчисление, ако стойността в A1 не е грешка? Функцията IFERROR не може да направи това. В случай на IF ISERROR просто въведете желаното изчисление в последния аргумент. Например:
=IF(ISERROR(A1), "Грешка в изчисленията", A1*2)
Както виждате, този по-дълъг вариант на формулата IFERROR, която често се смята за остаряла, все още може да бъде полезен :)
Налични изтегляния
Примери за формулата ISERROR (.xlsx файл)