IF функция – вложени формули и избягване на капани

IF функция – вложени формули и избягване на капани

Функцията IF ви позволява да направите логическо сравнение между стойност и това, което очаквате, като прави проверка на дадено условие и връща резултат "Вярно" или "Невярно".

  • АКО (нещо е "Вярно", направи еди си какво, в противен случай направи нещо друго)

Така че инструкцията IF може да има два резултата. Първият резултат е, ако сравнението е "Вярно", а вторият – ако сравнението е "Невярно".

Инструкциите IF са невероятно мощни и са в основата на много модели с електронни таблици, но те са и основната причина за много от проблемите в електронните таблици. В идеалния случай инструкцията IF се прилага върху минимален брой условия, като например "мъже/жени" или "да/не/може би", но понякога може да се наложи да оценявате по-сложни сценарии, които изискват влагане* на повече от 3 функции IF една в друга.

* "Влагане" се нарича практиката да се обединяват няколко функции в една формула.

Използвайте функцията IF, една от логическите функции, за да се върне една стойност, ако условието е вярно, и друга стойност, ако е невярно.

Синтаксис

IF(логически_тест; стойност_ако_вярно; [стойност_ако_невярно])

Например:

  • =IF(A2>B2;"Извън бюджета";"OK")

  • =IF(A2=B2;B4-A4;"")

Име на аргумент

Описание

логически_тест   

(задължително)

Условието, което искате да проверите.

стойност_ако_вярно   

(задължително)

Стойността, която искате да се върне, ако резултатът от логически_тест е ВЯРНО.

стойност_ако_невярно   

(незадължително)

Стойността, която искате да се върне, ако резултатът от логически_тест е НЕВЯРНО.

Забележки

Въпреки че Excel ще ви позволи да вложите до 64 отделни функции IF, не е никак препоръчително да правите това. Защо?

  • Използването на няколко инструкции IF изисква изключително добро обмисляне, за да ги създадете правилно и да сте сигурни, че тяхната логика е способна да изчисли правилно всяко едно условие от началото до края. Ако вашата формула не е вложена 100% правилно, тя може да работи добре в 75% от случаите, но в 25% от случаите да връща неочаквани резултати. За съжаление, шансовете да откриете тези 25% са незначителни.

  • Множеството инструкции IF може да станат изключително трудни за поддръжка, особено когато след време се върнете към тях и се опитате да разберете какво сте искали да направите, а още по-лошо – ако ги е писал някой друг.

Ако вашата инструкция IF сякаш расте до безкрай, значи е време да оставите мишката и да преосмислите стратегията си.

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

Примери

Следва пример за една относително стандартна вложена инструкция IF за конвертиране на резултатите от тестовете на ученици или студенти в еквивалентните им буквени оценки.

Сложна вложена инструкция IF – формулата в клетка E2 е: =IF(B2>97;"A+";IF(B2>93;"A";IF(B2>89;"A-";IF(B2>87;"B+";IF(B2>83;"B";IF(B2>79;"B-";IF(B2>77;"C+";IF(B2>73;"C";IF(B2>69;"C-";IF(B2>57;"D+";IF(B2>53;"D";IF(B2>49;"D-";"F"))))))))))))
  • =IF(D2>89;"A";IF(D2>79;"B";IF(D2>69;"C";IF(D2>59;"D";"F"))))

    Тази сложни вложена инструкция IF следва ясна логика:

  1. Ако резултатът от теста (в клетка D2) е по-голям от 89, учащият получава оценка A

  2. Ако резултатът от теста е по-голям от 79, учащият получава оценка B

  3. Ако резултатът от теста е по-голям от 69, учащият получава оценка C

  4. Ако резултатът от теста е по-голям от 59, учащият получава оценка D

  5. В противен случай учащият получава оценка F

Този конкретен пример е сравнително безопасен, защото няма вероятност връзката между резултатите от тестовете и буквените оценки да се промени, така че не се изисква много поддръжка. Ако обаче трябва да разделите оценките в групи A+, A и A- (и т.н.)? Сега вашата инструкция IF с 4 условия трябва да се напише отново, така че да има 12 условия! Ето как изглежда формулата сега:

  • =IF(B2>97;"A+";IF(B2>93;"A";IF(B2>89;"A-";IF(B2>87;"B+";IF(B2>83;"B";IF(B2>79;"B-"; IF(B2>77;"C+";IF(B2>73;"C";IF(B2>69;"C-";IF(B2>57;"D+";IF(B2>53;"D";IF(B2>49;"D-";"F"))))))))))))

Тя все още е функционално правилна и ще работи както очаквате, но ще ви отнеме много време да я напишете и още повече време да я тествате, за да сте сигурни, че прави това, което желаете. Друг очевиден проблем е, че се е наложило да въведете резултатите от тестовете и еквивалентните им буквени оценки на ръка. Каква е вероятността по случайност да сте допуснали грешка? А сега си представете, че трябва да направите това 64 пъти с по-сложни условия! Разбира се, че е възможно, но наистина ли искате да положите толкова усилия и да рискувате да допуснете грешки, които са много трудни за откриване?

Съвет: Всяка функция в Excel изисква отваряща и затваряща скоба (). Excel ще се опита да ви помогне да се ориентирате кое къде да поставите, като оцветява различни части от формулата, когато я редактирате. Ако например решите да редактирате горната формула, когато движите курсора покрай всяка от затварящите скоби ")", съответната й отваряща скоба ще се оцвети в същия цвят. Това може да е особено полезно в сложни вложени формули, когато се опитвате да разберете дали имате достатъчно съответстващи скоби.

Още примери

Следното е много често срещан пример за изчисляване на комисионата за продажби на база нивата на реализираните приходи.

Формулата в клетка D9 е: IF(C9>15000;20%;IF(C9>12500;17,5%;IF(C9>10000;15%;IF(C9>7500;12,5%;IF(C9>5000;10%;0)))))
  • =IF(C9>15000;20%;IF(C9>12500;17,5%;IF(C9>10000;15%;IF(C9>7500;12,5%;IF(C9>5000;10%;0)))))

Тази формула казва: АКО (C9 е по-голямо от 15 000, тогава върни 20%, АКО (C9 е по-голямо от 12 500, тогава върни 17,5% и т.н.

Въпреки че е много подобна на горния пример с оценките, тази формула е чудесен пример колко трудно може да бъде поддържането на големи инструкции IF – какво ще се наложи да направите, ако вашата организация реши да добави нови нива на възнагражденията или дори да промени сегашните стойности в левове или проценти? Ще ви се струпа много работа!

Съвет: Можете да вмъквате знаци за нов ред в лентата за формули, за да направите дългите формули по-лесни за четене. Просто натиснете ALT+ENTER преди текста, който искате да пренесете на нов ред.

Ето един пример със сценарий за комисиона с невярна логика:

Формулата в клетка D9 е с грешна последователност: =IF(C9>5000;10%;IF(C9>7500;12,5%;IF(C9>10000;15%;IF(C9>12500;17,5%;IF(C9>15000;20%;0)))))

Виждате ли къде е грешката? Сравнете последователността на сравненията на приходите с предишния пример. В каква посока върви тази последователност? Именно, от долу нагоре (от 5000 лв. към 15 000 лв.), а не обратно. Защо това е толкова голям проблем? Голям проблем е, защото формулата не може да премине успешно първата оценка за никоя стойност над 5000 лв. Ако например имате приходи 12 500 лв., инструкцията IF ще върне 10%, защото сумата е по-голяма от 5000 лв., и ще спре дотук. Това може да създаде огромни проблеми, защото в много случаи тези типове грешки остават незабелязани, докато не създадат неприятности. След като знаете, че сложните вложени инструкции IF крият сериозни опасности, какво можете да направите? В повечето случаи можете да използвате функцията VLOOKUP, вместо да създавате сложна формула с функцията IF. Когато използвате VLOOKUP, трябва първо да създадете референтна таблица:

Формулата в клетка D2 е: =VLOOKUP(C2;C5:D17;2;TRUE)
  • =VLOOKUP(C2;C5:D17;2;TRUE)

Тази формула търси стойността в C2 в диапазона C5:C17. Ако стойността бъде намерена, връща съответната стойността от същия ред в колона D.

Формулата в клетка C9 е: =VLOOKUP(B9;B2:C6;2;TRUE)
  • =VLOOKUP(B9,B2:C6,2,TRUE)

Подобно на горното, тази формула търси стойността в клетка B9 в диапазона B2:B22. Ако стойността бъде намерена, връща съответната стойността от същия ред в колона C.

Забележка: И двете функции VLOOKUP използват аргумента TRUE в края на формулата, което означава, че с тях търсим приблизително съвпадение. С други думи, формулата открива точно съвпадащите стойности в таблицата за справки, както и всички стойности, които попадат между тях. В този случай таблиците за справки трябва да са сортирани във възходящ ред, от най-малката към най-голямата стойност.

Функцията VLOOKUP е описана много по-подробно тук, но със сигурност е много по-лесна от сложната инструкция IF с 12 вложени нива! Има и други, по-малко очевидни предимства:

  • Референтните таблици на VLOOKUP са достъпни и лесно се виждат.

  • Стойностите в таблицата лесно могат да се актуализират и никога няма да се налага да променяте формулата, ако условията ви се променят.

  • Ако не искате хората да виждат или да променят вашата референтна таблица, просто я поставете в друг работен лист.

Знаете ли, че...?

Вече има и функция IFS, която може да замени множество вложени инструкции IF с една-единствена функция. Така че вместо първия пример за оценките, който има 4 вложени функции IF:

  • =IF(D2>89;"A";IF(D2>79;"B";IF(D2>69;"C";IF(D2>59;"D";"F"))))

Нещата могат значително да се опростят с една-единствена функция IFS:

  • =IFS(D2>89;"A";D2>79;"B";D2>69;"C";D2>59;"D";TRUE;"F")

Функцията IFS е чудесна, защото няма да се притеснявате за множеството инструкции IF и скоби.

Забележка: Тази функция е налична само ако имате абонамент за Office 365. Ако сте абонирани за Office 365, трябва да имате най-новата версия на Office.

Изпробвайте Office 365 или най-новата версия на Excel

Имате нужда от още помощ?

Винаги можете да попитате експерт в техническата общност на Excel, да получите поддръжка в общността за отговори или да предложите нова функция или подобрение на User Voice за Excel.

Сродни теми

Видео: Разширени функции IF
IFS функция (Office 365, Excel 2016 и по-нови версии)
Функцията COUNTIF ще брои стойности на базата на един критерий
Функцията COUNTIFS ще брои стойности на базата на няколко критерия
Функцията SUMIF ще сумира стойности на базата на един критерий
Функцията SUMIFS ще сумира стойности на базата на няколко критерия
AND функция
OR функция
VLOOKUP функция
Общ преглед на формулите в Excel
Начини за избягване на повредени формули
Използване на проверката за грешки за откриване на грешки във формули
Логически функции
Функции на Excel (по азбучен ред)
Функции на Excel (по категории)

Разширете уменията си в Office
Преглед на обучението
Получавайте първи новите функции
Присъединете се към участниците в Office Insider

Беше ли полезна тази информация?

Благодарим ви за обратната връзка!

Благодарим ви за вашата обратна връзка. Изглежда, че ще бъде полезно да ви свържем с един от нашите агенти по поддръжката на Office.

×