Excel VBA IIF функция
VBA IIF (известен също като незабавен If) е изявление, което може би често сте виждали, докато кодирате под VBA и създавате макроси. Той е подобен на функцията IF на Excel, където записвате логично условие и дава два изхода, ако условието е вярно и ако условието е невярно. Ако като го погледнете, вие го мислите като функция, подобна на VBA IF, която използваме за оценка на логически тестове и условия, грешите. Изглежда, че е близо до VBA Ако и в идеалния случай, може да се каже, че те наистина имат малка разлика между тях по време на изпълнение. В тази статия ще получим повече информация за VBA IIF изявлението и как да го използваме в ежедневния кодиращ живот, за да улесним задачите си.
VBA IIF изявление работи подобно на изявлението на Excel IF. Той проверява условието или предоставеното логическо изявление и дава изход или свързан със условието TRUE или когато условието е FALSE.
Синтаксис на IIF в Excel VBA
Синтаксисът за функцията VBA IIF в excel е както следва:
Където,
- Израз: е логичното условие, което искахме да оценим по IIF функция
- TruePart: е стойността / изхода, които очакваме, когато логическото условие / израз е ИСТИНСКО.
- FalsePart: е стойността / продукцията, която очакваме, когато логическото условие / израз е FALSE.
Как да използвате Excel VBA IIF?
Сега нека опитаме с някои примери за VBA IIF в Excel.
Можете да изтеглите този шаблон на VBA IIF Excel тук - VBA IIF Excel шаблонНека вземем прост пример, за да видим как IIF работи под Microsoft VBA.
Пример №1 - VBA IIF
Стъпка 1: Отворете Visual Basic Editor (VBE). Отидете на раздел Вмъкване и щракнете върху Модул . Той ще добави нов модул под VBE.
Стъпка 2: Определете нова под-процедура, която може да съдържа вашия макрос в този модул.
Код:
Под IIf_Ex1 () Край Под
Стъпка 3: Определете две нови променливи Var_1 като Long и Резултат с тип данни като вариант.
Код:
Sub IIf_Ex1 () Dim var_1 като дълъг резултат на резултата като булев край Sub
Стъпка 4: Задайте числова стойност на Var_1, така че да можем да използваме тази променлива за проверка на логическото състояние на IIF.
Код:
Под IIf_Ex1 () Dim var_1 като Дълъг Дим Резултат като Булев var_1 = 5 Край Sub
Стъпка 5: Използвайте променлива Result, за да запазите логичното IIF условие, при което ще проверим дали стойността, присвоена на Var_1, е по-голяма или равна на 10.
Код:
Под IIf_Ex1 () Dim var_1 като дълъг резултат Резултат като булев var_1 = 5 резултат = IIf (var_1> = 10, вярно, невярно) Край Sub
Стъпка 6: Сега използвайте Debug.Print, за да отпечатате резултата от състоянието на IIF в панела за преглед на незабавни резултати.
Код:
Под IIf_Ex1 () Dim var_1 като дълъг резултат Резултат като булев var_1 = 5 резултат = IIf (var_1> = 10, вярно, грешно) Debug.Print Result End Sub
Стъпка 7: Стартирайте този код, като натиснете F5 или Run бутона в горната част на екрана и вижте изхода под панела за незабавен изход.
Пример №2 - VBA IIF
Да предположим, че имаме данни на работния лист, както следва:
Всичко, което искаме, е изход под колона Б, така че или числото е четно или нечетно.
Стъпка 1: Определете нова под-процедура под VBE.
Код:
Под IIF_Ex2 () Край Sub
Стъпка 2: Определете две променливи „a” и „Numbers” като дълги.
Код:
Sub IIF_Ex2 () Dim a As Long Dim Number As Long End Sub
Стъпка 3: Започнете цикъл за For, под който искаме да циклираме всички стойности, присъстващи в клетка A2: A11. Loop ще започне от 2 до 11 (защото имаме колони в ред 1 за колони А и Б).
Код:
Sub IIF_Ex2 () Dim a As Long Dim Number As Long For a = 2 To 11 End Sub
Стъпка 4: Използвайте числовата променлива, дефинирана по-рано, за да съхраните всички числа от колона А, вариращи в дадения диапазон, използвайки оператор за присвояване (A2: A11). Използвайте следния ред код, за да го направите.
Number = Sheet1.Range („A“ & a)
Код:
Под IIF_Ex2 () Dim a As Long Dim Number as Long За a = 2 до 11 Number = Sheet1.Range ("A" & a) End Sub
Този ред код позволява на VBA да преминава през всички редове в колона A от „Sheet1“ в excel един по един под For цикъл.
Стъпка 5: Използвайте IIF, за да проверите дали всяка стойност на клетката е четна или нечетна и съхранявайте резултатите под всяка клетка на колона B. Следният ред код ще свърши задачата вместо вас.
Sheet1.Range (“B” & a) .Value = IIf (Число Mod 2 = 0, “Четно”, “Нечетно”)
Код:
Под IIF_Ex2 () Dim a като Long Dim число, толкова дълго за a = 2 до 11 число = Sheet1.Range ("A" & a) Sheet1.Range ("B" & a) .Value = IIf (Число Mod 2 = 0, "Нечетно", "Нечетно") Край Sub
Тук в този ред искаме резултатите да се съхраняват под всяка клетка на колона B от Sheet1. Затова използвахме „Sheet1.Range („ B “& i) .Value“ от лявата страна на парчето код. Използвахме IIF, за да проверим дали числото се дели на 2, използвайки Mod (оператор Modulo под VBA). И накрая, ние искаме изхода дали числото е четно или нечетно в колона B. Следователно тези две стойности са споменати в оператора IIF.
Стъпка 6: Затворете цикъла For с Next, така че след всяка итерация системата да се придвижи към следващата клетка в листа, докато достигне 11 -ия ред.
Код:
Под IIF_Ex2 () Dim a като Long Dim число, толкова дълго за a = 2 до 11 число = Sheet1.Range ("A" & a) Sheet1.Range ("B" & a) .Value = IIf (Число Mod 2 = 0, "Нечетно", "Нечетно") Next End Sub
Стъпка 7: Това е всичко. Изпълнете този код, като натиснете F5 или бутона Run, поставен в най-горния прозорец на VBE. След като стартирате този макрос, ще видите изход, както е показано по-долу под sheet1 (наречен „Example_1“) на работната книга на excel.
Пример №3 - VBA IIF
Сега ще видим вложен IIF изявление:
Това е един и същ начин, по който гнездим множество условия на IF в един цикъл.
Да предположим същите данни, каквито използвахме в предишния случай. Всичко, което искахме, е да напишем код, който ни позволява да различаваме числата, както следва:
- Ако числото е между 1 и 3 (включени 3), в колона Б. трябва да се посочи „Малък“.
- Ако числото е между 4 и 6 (включено 6), в колона Б. трябва да се посочи „Средно“.
- Ако числото е между 7 и 10 (включени 10), в колона Б. трябва да се посочи „Голямото“.
Нека напишем код за този тип IIF:
Стъпка 1: Определете нова под-процедура под вашия VBE, която може да съдържа вашия макрос.
Код:
Sub NestedIf () Край Sub
Следвайте стъпка 2 до стъпка 4 същото, както в горния пример (Пример 2 в тази статия). Тя включва дефиниране на променливи и добавяне на всички числа, присъстващи в колона A, под цикъл For.
Стъпка 5: Използвайте следното парче код, за да получите желания резултат.
Код:
Sub NestedIf () Dim Number as Long For a = 2 to 11 Number = Sheet2.Range ("A" & a) Sheet2.Range ("B" & a) .Value = IIf (Number = 7, "Large", " Средно ")) Край Sub
Стъпка 6: Затворете контура за For с Next инструкция и стартирайте този код, като използвате бутона F5 или Run, който присъства в горната лента под VBE. След като стартирате кода, ще видите изхода, както е показано по-долу:
Тук в този код се използва вложеното IIF. Под първия IIF ни се дава какво трябва да бъде отпечатано в колона B, когато числата са между 1 и 3. Под втория IIF споменахме какво трябва да бъде отпечатано в колона B, когато числата са по-големи или равни на 7 и под същия IIF, ние предоставихме какво трябва да бъде отпечатано в колона B, когато числата не са между 1 до 3 и 7 до 10.
По този начин можем да добавим множество IIF под един и същ код и да ги вмъкнем. Това е от тази статия. Нека обгърнем нещата с някои неща, които трябва да се запомнят.
Неща, които трябва да запомните
- IIF винаги оценява и двете части (ИСТИНСКА и ЛЕЖНА) за конкретно състояние. Въпреки това, тя отпечатва ЛЕЖНАТА част само когато нищо не е ИСТИНСКО.
- Писането е съкратено от това на стандартните изявления If-Else.
- Не е добре известно, следователно някой потребител може да не разбере кода ви, ако сте използвали IIF вместо конвенционален If-Else.
Препоръчителни статии
Това е ръководство за VBA IIF. Тук обсъждаме как да използвате Excel VBA IIF заедно с практически примери и шаблон за Excel, който можете да изтеглите. Можете да разгледате и другите ни предложени статии -
- Работа с VBA Active Cell
- Изтриване на ред в VBA
- Как да използвате Excel VBA Transpose?
- Как да поправите грешка 1004 при използване на VBA