Функция Excel VBA IIF
VBA IIF (также известный как Immediate If) - это оператор, который вы часто видели при кодировании в VBA и создании макросов. Это похоже на функцию IF в Excel, где вы записываете логическое условие и выдает два выхода, если условие истинно и если условие ложно. Если, глядя на это, вы думаете, что это функция, похожая на VBA IF, которую мы используем для оценки логических тестов и условий, вы ошибаетесь. Кажется, это близко к VBA. Если и в идеале, можно сказать, что они действительно имеют небольшую разницу между ними во время исполнения. В этой статье мы получим больше информации об операторе VBA IIF и о том, как его использовать в нашей повседневной жизни, чтобы упростить наши задачи.
Оператор VBA IIF работает аналогично выражению Excel IF. Он проверяет предоставленное условие или логический оператор и выдает выходные данные, связанные с условием TRUE или когда условие имеет значение FALSE.
Синтаксис IIF в Excel VBA
Синтаксис для функции VBA IIF в Excel выглядит следующим образом:
Где,
- Выражение: это логическое условие, которое мы хотели оценить в рамках функции IIF
- TruePart: это ожидаемое значение / результат, когда логическое условие / выражение TRUE.
- FalsePart: это ожидаемое значение / результат, когда логическое условие / выражение равно FALSE.
Как использовать Excel VBA IIF?
Теперь давайте попробуем с некоторыми примерами VBA IIF в Excel.
Вы можете скачать этот шаблон VBA IIF Excel здесь - Шаблон VBA IIF ExcelДавайте рассмотрим простой пример, чтобы увидеть, как IIF работает под Microsoft VBA.
Пример № 1 - VBA IIF
Шаг 1. Откройте редактор Visual Basic (VBE). Перейдите на вкладку « Вставка » и нажмите « Модуль» . Это добавит новый модуль под VBE.
Шаг 2: Определите новую подпроцедуру, которая может содержать ваш макрос в этом модуле.
Код:
Sub IIf_Ex1 () End Sub
Шаг 3: Определите две новые переменные Var_1 как Long и Result с типом данных в качестве варианта.
Код:
Sub IIf_Ex1 () Dim var_1 As Long Dim Result As Boolean End Sub
Шаг 4: Присвойте числовое значение Var_1, чтобы мы могли использовать эту переменную для проверки логического условия IIF.
Код:
Sub IIf_Ex1 () Dim var_1 As Long Dim Result As Boolean var_1 = 5 End Sub
Шаг 5: Используйте переменную Result, чтобы сохранить логическое условие IIF, при котором мы собираемся проверить, больше ли значение, присвоенное Var_1, или равно 10.
Код:
Sub IIf_Ex1 () Dim var_1 As Long Dim Результат как Boolean var_1 = 5 Результат = IIf (var_1> = 10, True, False) End Sub
Шаг 6: Теперь используйте Debug.Print, чтобы напечатать результат условия IIF на панели немедленного просмотра результатов.
Код:
Sub IIf_Ex1 () Dim var_1 As Long Dim Result As Boolean var_1 = 5 Result = IIf (var_1> = 10, True, False) Debug.Print Результат End Sub
Шаг 7: Запустите этот код, нажав F5 или кнопку Run в верхней части панели, и просмотрите результат в разделе «Немедленный вывод».
Пример № 2 - VBA IIF
Предположим, у нас есть данные в таблице:
Все, что нам нужно, - это вывод в столбце B, такой, чтобы число было четным или нечетным.
Шаг 1: Определите новую подпроцедуру в VBE.
Код:
Sub IIF_Ex2 () End Sub
Шаг 2: Определите две переменные «a» и «Numbers» как Long.
Код:
Sub IIF_Ex2 () Dim a As Long Dim Number As Long End Sub
Шаг 3: Запустите цикл For, в котором мы хотим зациклить все значения, присутствующие в ячейке A2: A11. Цикл начнется со 2 до 11 (потому что у нас есть заголовки в строке 1 для столбцов A и B).
Код:
Sub IIF_Ex2 () Dim a As Long Dim Number As Long Для a = от 2 до 11 End Sub
Шаг 4: Используйте переменную номера, определенную ранее, чтобы сохранить все числа из столбца A, изменяющиеся в заданном диапазоне, с помощью оператора присваивания (A2: A11). Используйте следующую строку кода, чтобы сделать это.
Number = Sheet1.Range («A» & a)
Код:
Sub 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). Значение = IIf (Число Mod 2 = 0, «Четный», «Нечетный»)
Код:
Sub IIF_Ex2 () Уменьшить как длинное Уменьшить число до a Для номера от 2 до 11 = Sheet1.Range ("A" & a) Sheet1.Range ("B" & a). Значение = IIf (Number Mod 2 = 0, "Четный", "Нечетный") End Sub
Здесь, в этой строке, мы хотим, чтобы результаты сохранялись под каждой ячейкой столбца B из Sheet1. Поэтому мы использовали «Sheet1.Range (« B »& i) .Value» в левой части кода). Мы использовали IIF, чтобы проверить, делится ли число на 2, используя Mod (оператор Modulo в VBA). Наконец, мы хотим получить вывод о том, является ли число четным или нечетным в столбце B. Поэтому эти два значения упоминаются в операторе IIF.
Шаг 6: Закройте цикл For с помощью оператора Next, чтобы после каждой итерации система двигалась к следующей ячейке в листе, пока не достигнет 11- й строки.
Код:
Sub IIF_Ex2 () Уменьшить как длинное Уменьшить число до a Для номера от 2 до 11 = Sheet1.Range ("A" & a) Sheet1.Range ("B" & a). Значение = IIf (Number Mod 2 = 0, "Четный", "Нечетный") Next End Sub
Шаг 7: Вот и все. Запустите этот код, нажав F5 или кнопку Run, расположенную в самой верхней панели VBE. Запустив этот макрос, вы увидите вывод, как показано ниже в листе 1 (названном «Пример_1») книги Excel.
Пример № 3 - VBA IIF
Теперь мы увидим вложенное заявление IIF:
Это то же самое, что мы вкладываем несколько условий IF в один цикл.
Предположим, те же данные, которые мы использовали в предыдущем случае. Все, что мы хотели, это написать код, который позволит нам различать числа следующим образом:
- Если число находится в диапазоне от 1 до 3 (включая 3), в колонке В следует указать «Маленький».
- Если число составляет от 4 до 6 (6 включительно), в колонке В должно быть упомянуто «Среднее».
- Если число находится в диапазоне от 7 до 10 (включая 10), в колонке B следует указать «Большой».
Давайте напишем код для этого типа IIF:
Шаг 1: Определите новую подпроцедуру под вашим VBE, которая может содержать ваш макрос.
Код:
Sub NestedIf () End Sub
Выполните шаги с 2 по 4 так же, как в приведенном выше примере (пример 2 в этой статье). Он включает в себя определение переменных и добавление всех чисел, представленных в столбце A в цикле For.
Шаг 5: Используйте следующий фрагмент кода, чтобы получить желаемый результат.
Код:
Sub NestedIf () Dim Number as Long Для a = от 2 до 11 Number = Sheet2.Range ("A" & a) Sheet2.Range ("B" & a). Значение = IIf (Number = 7, "Large", " Средний ")) End Sub
Шаг 6: Закройте цикл For с помощью оператора Next и запустите этот код, используя клавишу F5 или кнопку Run, расположенную на верхней ленте под VBE. Как только вы запустите код, вы увидите вывод, как показано ниже:
Здесь, в этом коде, используется вложенный IIF. При первом ИИФ нам дается то, что должно быть напечатано в столбце В, когда числа находятся в диапазоне от 1 до 3. В рамках второго ИИФ мы упомянули, что должно быть напечатано в столбце В, если числа больше или равны 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