Funkcia Excel VBA IIF
VBA IIF (tiež známy ako Immediate If) je príkaz, ktorý ste mohli často vidieť pri programovaní pod VBA a pri vytváraní makier. Je to podobné funkcii IF programu Excel, kde si zapíšete logickú podmienku a dá dva výstupy, ak je podmienka pravdivá a ak je podmienka nepravdivá. Ak sa na to pozeráte ako na funkciu podobnú VBA IF, ktorú používame na vyhodnotenie logických testov a podmienok, mýlite sa. Zdá sa, že je blízko VBA Ak je to ideálne, dá sa povedať, že medzi nimi počas vykonávania skutočne existuje malý rozdiel. V tomto článku sa dozviete viac informácií o vyhlásení VBA IIF a o tom, ako ho používať v našom každodennom živote kódovania, aby sme uľahčili vykonávanie našich úloh.
Príkaz VBA IIF funguje podobne ako príkaz Excel IF. Skontroluje poskytnutú podmienku alebo logický príkaz a vydá výstup buď spojený s podmienkou PRAVDA, alebo ak je podmienkou FALSE.
Syntax IIF v Excel VBA
Syntax funkcie VBA IIF v Exceli je nasledovná:
Kde,
- Výraz: je logická podmienka, ktorú sme chceli vyhodnotiť v rámci funkcie IIF
- TruePart: je hodnota / výstup, ktorý očakávame, keď je logická podmienka / výraz TRUE.
- FalsePart: je hodnota / výstup, ktorý očakávame, keď je logická podmienka / výraz FALSE.
Ako používať Excel VBA IIF?
Teraz vyskúšajme niekoľko príkladov na VBA IIF v Exceli.
Túto šablónu Excel VBA IIF si môžete stiahnuť tu - šablónu Excel VBA IIFVezmime jednoduchý príklad a ukážeme, ako IIF funguje v prostredí Microsoft VBA.
Príklad č. 1 - VBA IIF
Krok 1: Otvorte editor jazyka Visual Basic (VBE). Prejdite na kartu Vložiť a kliknite na modul . Pridá nový modul pod VBE.
Krok 2: Definujte novú čiastkovú procedúru, ktorá môže držať vaše makro v tomto module.
kód:
Sub IIf_Ex1 () Koniec Sub
Krok 3: Definujte dve nové premenné Var_1 ako dlhé a výsledok s typom údajov ako variantom.
kód:
Sub IIf_Ex1 () Dim var_1 Ako dlhý výsledok dim ako booleovský koniec Sub
Krok 4: Priraďte číselnú hodnotu k Var_1, aby sme túto premennú mohli použiť na kontrolu logických podmienok IIF.
kód:
Sub IIf_Ex1 () Dim var_1 Ako dlho Dim Výsledok ako booleovský var_1 = 5 End Sub
Krok 5: Použite premennú Result na uloženie logickej podmienky IIF, za ktorej sa chystáme skontrolovať, či je hodnota priradená k Var_1 väčšia alebo rovná 10.
kód:
Sub IIf_Ex1 () Dim var_1 Ako dlhý výsledok Dim ako booleovský var_1 = 5 Výsledok = IIf (var_1> = 10, True, False) End Sub
Krok 6: Teraz použite Debug.Print na vytlačenie výsledku stavu IIF na table prehliadača okamžitých výsledkov.
kód:
Sub IIf_Ex1 () Dim var_1 Ako dlhý výsledok Dim ako booleovský var_1 = 5 Výsledok = IIf (var_1> = 10, True, False) Debug.Print Výsledok End Sub
Krok 7: Spustite tento kód stlačením klávesy F5 alebo Spustiť v hornej časti tably a pozrite si výstup v časti Okamžité výstupy.
Príklad č. 2 - VBA IIF
Predpokladajme, že máme údaje v pracovnom hárku takto:
Všetko, čo chceme, je výstup v stĺpci B taký, že číslo je párne alebo nepárne.
Krok 1: Definujte nový podprogram v rámci VBE.
kód:
Sub IIF_Ex2 () Koniec Sub
Krok 2: Definujte dve premenné „a“ a „čísla“ ako dlhé.
kód:
Sub IIF_Ex2 () Dim ako dlhé Dim číslo ako Long End Sub
Krok 3: Spustite slučku For, v ktorej chceme opakovať všetky hodnoty prítomné v bunke A2: A11. Slučka začne od 2 do 11 (pretože v riadku 1 sú záhlavia pre stĺpce A a B).
kód:
Sub IIF_Ex2 () Dim ako dlhé Dim číslo tak dlhé pre a = 2 až 11 End Sub
Krok 4: Použite číselnú premennú definovanú skôr na uloženie všetkých čísel zo stĺpca A, ktoré sa v danom rozsahu líšia pomocou operátora priradenia (A2: A11). Použite nasledujúci riadok kódu.
Number = Sheet1.Range („A“ & a)
kód:
Sub IIF_Ex2 () Dim ako dlhé číslo Dim ako dlhé pre a = 2 až 11 číslo = Sheet1.Range ("A" & a) End Sub
Tento riadok kódu umožňuje VBA prechádzať cez všetky riadky v stĺpci A z „List1“ v Exceli jeden po druhom pod For For loop.
Krok 5: Použite IIF na kontrolu, či je každá bunková hodnota párna alebo nepárna a výsledky uložte do každej bunky v stĺpci B. Úloha sa vykoná za nasledujúcim riadkom kódu.
List1.Range (“B” & a). Hodnota = IIf (Number Mod 2 = 0, “Even”, “Lich”)
kód:
Sub IIF_Ex2 () Dim ako dlhé Dim číslo tak dlhé Pre a = 2 až 11 Number = Sheet1.Range ("A" & a) Sheet1.Range ("B" & a) .Value = IIf (Number Mod 2 = 0, „Párne“, „nepárne“) Koniec sub
V tomto riadku chceme, aby sa výsledky uložili pod každú bunku stĺpca B z hárku 1. Preto sme použili „Sheet1.Range (“ B ”& i) .Value” na ľavej strane časti kódu. Použili sme IIF na overenie, či je číslo deliteľné 2 pomocou Mod (operátor Modulo pod VBA). Nakoniec chceme výstup, či je číslo párne alebo nepárne v stĺpci B. Preto sú tieto dve hodnoty uvedené v príkaze IIF.
Krok 6: Zatvorte príkaz For loop with Next, aby sa po každej iterácii systém posunul smerom k nasledujúcej bunke v hárku, až kým nedosiahne 11. riadok.
kód:
Sub IIF_Ex2 () Dim ako dlhé Dim číslo tak dlhé Pre a = 2 až 11 Number = Sheet1.Range ("A" & a) Sheet1.Range ("B" & a) .Value = IIf (Number Mod 2 = 0, „Párne“, „nepárne“) Ďalší koniec Sub
Krok 7: To je všetko. Spustite tento kód stlačením klávesy F5 alebo Run, ktorá sa nachádza na najvyššom paneli VBE. Po spustení tohto makra uvidíte výstup uvedený nižšie v hárku 1 (nazvanom „Príklad_1“) zošita Excel.
Príklad č. 3 - VBA IIF
Teraz uvidíme vnorené vyhlásenie IIF:
Rovnakým spôsobom hniezdime viac IF podmienok v jednej slučke.
Predpokladajme rovnaké údaje, aké sme použili v predchádzajúcom prípade. Chceli sme iba napísať kód, ktorý nám umožní rozlišovať medzi číslami takto:
- Ak je číslo medzi 1 a 3 (vrátane 3), v stĺpci B by sa malo uviesť „malé“.
- Ak je číslo medzi 4 a 6 (vrátane 6), malo by sa v stĺpci B uviesť „stredné“.
- Ak je číslo medzi 7 a 10 (vrátane 10), v stĺpci B by sa malo uviesť „veľké“.
Napíšme kód pre tento typ IIF:
Krok 1: Definujte nový podprogram pod VBE, ktorý dokáže uchovať vaše makro.
kód:
Sub NestedIf () End Sub
Postupujte podľa krokov 2 až 4, ktoré sú rovnaké ako v predchádzajúcom príklade (príklad 2 v tomto článku). Zahŕňa definovanie premenných a pridanie všetkých čísiel prítomných v stĺpci A pod slučku For.
Krok 5: Pomocou nasledujúceho kódu získajte požadovaný výstup.
kód:
Sub NestedIf () Dim číslo tak dlhé pre a = 2 až 11 číslo = Sheet2.Range ("A" & a) Sheet2.Range ("B" & a) .Hodnota = IIf (Number = 7, "Large", " Stredná “)) Koniec Sub
Krok 6: Zatvorte príkaz For loop with Next a spustite tento kód pomocou tlačidla F5 alebo Run, ktoré sa nachádza na hornom páse pod VBE. Po spustení kódu uvidíte výstup nasledovne:
Tu sa v tomto kóde používa vnorená IIF. V rámci prvého IIF dostávame, čo by sa malo tlačiť v stĺpci B, keď sú čísla medzi 1 a 3. V druhom IIF sme sa zmienili o tom, čo by sa malo tlačiť v stĺpci B, keď sú čísla väčšie alebo sa rovnajú 7 a pod rovnakom IIF, poskytli sme, čo by sa malo vytlačiť v stĺpci B, keď čísla nie sú medzi 1 až 3 a 7 až 10.
Týmto spôsobom môžeme do jedného kódu pridať viacero IIF a vnoriť ich. Toto je z tohto článku. Zabalme to do vecí, na ktoré treba pamätať.
Čo je potrebné pamätať
- IIF vždy vyhodnocuje obe časti (PRAVDA a NEPRAVDA) pre konkrétny stav. Časť FALSE sa však vytlačí iba v prípade, že nič nie je PRAVDA.
- Písanie je skrátené ako v prípade štandardných vyhlásení If-Else.
- Nie je známe, preto niektorí používatelia nemusia porozumieť vášmu kódu, ak ste namiesto konvenčného nástroja If-Else použili IIF.
Odporúčané články
Toto je príručka pre VBA IIF. Tu diskutujeme o tom, ako používať Excel VBA IIF spolu s praktickými príkladmi a stiahnuteľnou šablónou Excel. Môžete si tiež prečítať naše ďalšie navrhované články -
- Práca s VBA Active Cell
- Odstránenie riadku vo VBA
- Ako používať Excel VBA Transpozícia?
- Ako opraviť chybu 1004 pomocou VBA