Функцията 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, като използвате няколко IFs, и кога да разберете, че е време да използвате друг инструмент в арсенала на Excel.
Примери
Следва пример за една относително стандартна вложена инструкция IF за конвертиране на резултатите от тестовете на ученици или студенти в еквивалентните им буквени оценки.
-
=IF(D2>89;"A";IF(D2>79;"B";IF(D2>69;"C";IF(D2>59;"D";"F"))))
Тази сложни вложена инструкция IF следва ясна логика:
-
Ако резултатът от теста (в клетка D2) е по-голям от 89, учащият получава оценка A
-
Ако резултатът от теста е по-голям от 79, учащият получава оценка B
-
Ако резултатът от теста е по-голям от 69, учащият получава оценка C
-
Ако резултатът от теста е по-голям от 59, учащият получава оценка D
-
В противен случай учащият получава оценка 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 ще се опита да ви помогне да разберете къде отива, като оцветява различни части от формулата, когато я редактирате. Ако например редактирате горната формула, докато премествате курсора над всяка от затварящата кръгла кръгла скоба ")", съответната й отваряща кръгла скоба ще стане с един и същ цвят. Това може да бъде особено полезно в сложни вложени формули, когато се опитвате да разберете дали имате достатъчно съответстващи скоби.
Още примери
Следното е много често срещан пример за изчисляване на комисионата за продажби на база нивата на реализираните приходи.
-
=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 преди текста, който искате да пренесете на нов ред.
Ето един пример със сценарий за комисиона с невярна логика:
Виждате ли какво не е наред? Сравнете последователността на сравненията на приходите с предишния пример. В каква посока върви тази последователност? Точно така, от долу нагоре (от 5000 лв. до 15 000 лв.), а не обратно. Защо това е толкова голям проблем? Голяма работа е, защото формулата не може да премине първата оценка за никаква стойност над 5000 лв. Да речем, че имате приходи от 12 500 лв. – инструкцията IF ще върне 10%, защото е по-голяма от 5000 лв. и ще спре дотук. Това може да е невероятно проблемно, защото в много ситуации тези типове грешки не се отлагат, докато не окажат отрицателно въздействие. След като знаете, че сложните вложени инструкции IF крият сериозни опасности, какво можете да направите? В повечето случаи можете да използвате функцията VLOOKUP, вместо да създавате сложна формула с функцията IF. Когато използвате VLOOKUP, трябва първо да създадете референтна таблица:
-
=VLOOKUP(C2;C5:D17;2;TRUE)
Тази формула търси стойността в C2 в диапазона C5:C17. Ако стойността бъде намерена, връща съответната стойността от същия ред в колона D.
-
=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 и скоби.
Забележка: Тази функция е налична само ако имате абонамент за Microsoft 365. Ако сте абонат на Microsoft 365, се уверете, че имате най-новата версия на Office.Купи или изпробвай Microsoft 365
Имате нужда от още помощ?
Винаги можете да попитате експерт в техническата общност на Excel или да получите поддръжка в Общността за отговори от.