Funkce Excel VBA IIF
VBA IIF (také známý jako Immediate If) je příkaz, který jste mohli často vidět při programování pod VBA a vytváření maker. Je podobná funkci IF aplikace Excel, kde zapisujete logickou podmínku a dává dva výstupy, pokud je podmínka true a podmínka je false. Pokud se na to díváte jako na funkci podobnou VBA IF, kterou používáme k hodnocení logických testů a podmínek, mýlíte se. Zdá se, že se blíží VBA Pokud a v ideálním případě lze říci, že mezi nimi mají během provádění opravdu malý rozdíl. V tomto článku se dozvíte více informací o prohlášení VBA IIF a o tom, jak je používat v našem každodenním programovacím životě, abychom usnadnili naše úkoly.
Příkaz VBA IIF funguje podobně jako příkaz Excel IF. Zkontroluje poskytnutou podmínku nebo logický příkaz a vydá výstup buď spojený s podmínkou PRAVDA, nebo pokud je podmínkou FALSE.
Syntaxe IIF v Excelu VBA
Syntaxe funkce VBA IIF v Excelu je následující:
Kde,
- Výraz: je logická podmínka, kterou jsme chtěli vyhodnotit v rámci funkce IIF
- TruePart: je hodnota / výstup, který očekáváme, když je logická podmínka / výraz PRAVDA.
- FalsePart: je hodnota / výstup, který očekáváme, když je logická podmínka / výraz FALSE.
Jak používat Excel VBA IIF?
Nyní vyzkoušejte několik příkladů na VBA IIF v Excelu.
Tuto šablonu VBA IIF Excel si můžete stáhnout zde - VBA IIF Excel TemplateVezměme si jednoduchý příklad, abychom viděli, jak IIF funguje pod Microsoft VBA.
Příklad č. 1 - VBA IIF
Krok 1: Otevřete editor jazyka Visual Basic (VBE). Přejděte na kartu Vložit a klikněte na Modul . Přidá nový modul pod VBE.
Krok 2: Definujte nový dílčí postup, který může v tomto modulu držet vaše makro.
Kód:
Sub IIf_Ex1 () End Sub
Krok 3: Definujte dvě nové proměnné Var_1 jako Long a Result s datovým typem jako variantou.
Kód:
Sub IIf_Ex1 () Dim var_1 Jako výsledek dlouhého dim jako Boolean End Sub
Krok 4: Přiřaďte číselnou hodnotu Var_1, abychom tuto proměnnou mohli použít ke kontrole logických podmínek IIF.
Kód:
Sub IIf_Ex1 () Dim var_1 Jako dlouhý Dim Výsledek jako Boolean var_1 = 5 End Sub
Krok 5: Pomocí proměnné Result uložte logickou podmínku IIF, za níž se chystáme zkontrolovat, zda je hodnota přiřazená k Var_1 větší nebo rovná 10.
Kód:
Sub IIf_Ex1 () Dim var_1 Jako dlouhý Dim Výsledek jako Booleovský var_1 = 5 Výsledek = IIf (var_1> = 10, True, False) End Sub
Krok 6: Nyní pomocí Debug.Print vytiskněte výsledek podmínky IIF v podokně prohlížeče okamžitých výsledků.
Kód:
Sub IIf_Ex1 () Dim var_1 Jako dlouhý dim výsledek jako booleovský var_1 = 5 Výsledek = IIf (var_1> = 10, True, False) Debug.Print Výsledek End Sub
Krok 7: Spusťte tento kód stisknutím klávesy F5 nebo Run v horní části podokna a podívejte se na výstup v podokně Okamžitý výstup.
Příklad č. 2 - VBA IIF
Předpokládejme, že máme data v listu takto:
Vše, co chceme, je výstup ve sloupci B tak, že číslo je sudé nebo liché.
Krok 1: Definujte nový dílčí postup ve VBE.
Kód:
Sub IIF_Ex2 () End Sub
Krok 2: Definujte dvě proměnné „a“ a „čísla“ jako dlouhé.
Kód:
Sub IIF_Ex2 () Dim a As Long Dim Number As Long End Sub
Krok 3: Spusťte smyčku For, ve které chceme smyčky všechny hodnoty přítomné v buňce A2: A11. Smyčka začne od 2 do 11 (protože máme záhlaví v řádku 1 pro sloupec A a B).
Kód:
Sub IIF_Ex2 () Dim a As Long Dim Number Tak Long Pro a = 2 až 11 End Sub
Krok 4: Použijte číselnou proměnnou definovanou dříve k uložení všech čísel ze sloupce A, která se mění v daném rozsahu pomocí operátoru přiřazení (A2: A11). Použijte následující řádek kódu.
Number = Sheet1.Range („A“ & a)
Kód:
Sub IIF_Ex2 () Dim a As Long Dim Number As Long Pro a = 2 to 11 Number = Sheet1.Range ("A" & a) End Sub
Tento řádek kódu umožňuje VBA procházet všechny řádky ve sloupci A z “List1” v Excelu jeden po druhém pod For smyčky.
Krok 5: Pomocí IIF zkontrolujte, zda je každá hodnota buňky sudá nebo lichá, a uložte výsledky pod každou buňku sloupce B. Úkol provede následující řádek kódu.
List1.Range (“B” & a). Hodnota = IIf (Number Mod 2 = 0, “Even”, “Liché”)
Kód:
Sub IIF_Ex2 () Dim a As Long Dim Number As Long Pro a = 2 To 11 Number = Sheet1.Range ("A" & a) Sheet1.Range ("B" & a) .Value = IIf (Number Mod 2 = 0, „Sudý“, „Lichý“) End Sub
Zde v tomto řádku chceme, aby výsledky byly uloženy pod každou buňkou sloupce B z List1. Proto jsme použili „List1.Range (“ B ”& i) .Value” na levé straně kusu kódu. Použili jsme IIF ke kontrole, zda je číslo dělitelné 2 pomocí Mod (operátor Modulo pod VBA). Nakonec chceme výstup, zda je číslo sudé nebo liché ve sloupci B. Proto jsou tyto dvě hodnoty uvedeny v příkazu IIF.
Krok 6: Uzavřete příkaz For loop with Next, aby se po každé iteraci systém posunul směrem k další buňce v listu, dokud nedosáhne 11. řádku.
Kód:
Sub IIF_Ex2 () Dim a As Long Dim Number As Long Pro a = 2 To 11 Number = Sheet1.Range ("A" & a) Sheet1.Range ("B" & a) .Value = IIf (Number Mod 2 = 0, „Sudý“, „Lichý“) Next End Sub
Krok 7: To je vše. Spusťte tento kód stisknutím klávesy F5 nebo Spustit umístěné na horním panelu VBE. Po spuštění tohoto makra uvidíte výstup níže v listu 1 (pojmenovaný jako „Příklad_1“) sešitu Excel.
Příklad č. 3 - VBA IIF
Nyní uvidíme vnořený příkaz IIF:
To je stejný způsob, jak vnoříme více IF podmínek v jedné smyčce.
Předpokládejme stejná data jako v předchozím případě. Chtěli jsme jen napsat kód, který nám umožní rozlišovat mezi čísly takto:
- Pokud je číslo mezi 1 a 3 (3 zahrnuto), mělo by se ve sloupci B uvést „Malé“.
- Pokud je číslo mezi 4 a 6 (zahrnuto 6), mělo by se ve sloupci B uvést „Střední“.
- Pokud je číslo mezi 7 a 10 (včetně 10), mělo by se ve sloupci B uvést „Velké“.
Napíšeme kód pro tento typ IIF:
Krok 1: Definujte nový dílčí postup ve vašem VBE, který může pojmout vaše makro.
Kód:
Sub NestedIf () End Sub
Postupujte podle kroků 2 až 4 stejně jako ve výše uvedeném příkladu (příklad 2 v tomto článku). Zahrnuje definování proměnných a přidání všech čísel přítomných ve sloupci A pod smyčku For.
Krok 5: Pomocí následujícího kódu získejte požadovaný výstup.
Kód:
Sub NestedIf () Dim číslo tak dlouho, pro a = 2 až 11 číslo = Sheet2.Range ("A" & a) Sheet2.Range ("B" & a) .Value = IIf (Number = 7, "Large", " Střední “)) End Sub
Krok 6: Zavřete příkaz For loop with Next a spusťte tento kód pomocí tlačítka F5 nebo Run, které se nachází na horní pásce pod VBE. Po spuštění kódu uvidíte výstup níže:
Zde se v tomto kódu používá vnořená IIF. V rámci prvního IIF dostáváme, co by se mělo tisknout ve sloupci B, když jsou čísla mezi 1 a 3. Ve druhém IIF jsme se zmínili, co by se mělo tisknout ve sloupci B, pokud jsou čísla větší nebo rovno 7 a pod stejný IIF, poskytli jsme, co by mělo být vytištěno ve sloupci B, pokud čísla nejsou mezi 1 až 3 a 7 až 10.
Tímto způsobem můžeme přidat více IIF do stejného kódu a vnořit je. Toto je z tohoto článku. Pojďme to zabalit s některými věcmi, které je třeba mít na paměti.
Co si pamatovat
- IIF vždy vyhodnocuje obě části (PRAVDA a NEPRAVDA) pro konkrétní stav. Část FALSE se však vytiskne pouze v případě, že nic není PRAVDA.
- Psaní je zkráceno než u standardních prohlášení If-Else.
- Není známo, proto někteří uživatelé nemusí rozumět vašemu kódu, pokud jste místo konvenčního If-Else použili IIF.
Doporučené články
Toto je průvodce VBA IIF. Zde diskutujeme o tom, jak používat Excel VBA IIF spolu s praktickými příklady a šablonou Excel ke stažení. Můžete si také prohlédnout naše další doporučené články -
- Práce s aktivní buňkou VBA
- Odstranění řádku ve VBA
- Jak používat Excel VBA Transpose?
- Jak opravit chybu 1004 pomocí VBA