Funzione Excel VBA IIF
VBA IIF (noto anche come Immediate If) è un'affermazione che potresti aver visto spesso durante la codifica in VBA e la creazione di macro. È simile alla funzione IF di Excel in cui si annota una condizione logica e fornisce due output, se la condizione è vera e se la condizione è falsa. Se guardandolo lo stai pensando come una funzione simile a VBA IF che utilizziamo per valutare test e condizioni logici, ti sbagli. Sembra essere vicino a VBA Se e idealmente, si può dire che hanno davvero una piccola differenza tra loro durante l'esecuzione. In questo articolo, avremo maggiori informazioni sulla dichiarazione VBA IIF e su come usarla nella nostra vita di programmazione quotidiana per semplificare i nostri compiti.
L'istruzione VBA IIF funziona in modo simile all'istruzione IF di Excel. Verifica la condizione o l'istruzione logica fornita e fornisce l'output associato alla condizione TRUE o quando la condizione è FALSE.
Sintassi di IIF in Excel VBA
La sintassi per la funzione VBA IIF in Excel è la seguente:
Dove,
- Espressione: è la condizione logica che volevamo valutare sotto la funzione IIF
- TruePart: è il valore / output che ci aspettiamo, quando la condizione / espressione logica è TRUE.
- FalsePart: è il valore / output che ci aspettiamo, quando la condizione / espressione logica è FALSE.
Come usare Excel VBA IIF?
Ora proviamo con alcuni esempi su VBA IIF in Excel.
Puoi scaricare questo modello Excel VBA IIF qui - Modello Excel VBA IIFFacciamo un semplice esempio per vedere come IIF funziona con Microsoft VBA.
Esempio n. 1 - VBA IIF
Passaggio 1: aprire un Visual Basic Editor (VBE). Vai alla scheda Inserisci e fai clic su Modulo . Aggiungerà un nuovo modulo sotto VBE.
Passaggio 2: definire una nuova procedura secondaria che può contenere la macro in questo modulo.
Codice:
Sub IIf_Ex1 () End Sub
Passaggio 3: definire due nuove variabili Var_1 come Long e Result con il tipo di dati come variante.
Codice:
Sub IIf_Ex1 () Dim var_1 As Long Dim Risultato as Boolean End Sub
Passaggio 4: assegnare un valore numerico a Var_1 in modo che possiamo utilizzare questa variabile per verificare la condizione IIF logica.
Codice:
Sub IIf_Ex1 () Dim var_1 As Long Dim Risultato as Boolean var_1 = 5 End Sub
Passaggio 5: utilizzare la variabile Risultato per archiviare la condizione IIF logica in base alla quale verrà verificato se il valore assegnato a Var_1 è maggiore o uguale a 10.
Codice:
Sub IIf_Ex1 () Dim var_1 As Long Dim Risultato as Boolean var_1 = 5 Risultato = IIf (var_1> = 10, True, False) End Sub
Passaggio 6: ora utilizzare Debug.Print per stampare il risultato della condizione IIF sul riquadro del visualizzatore dei risultati immediati.
Codice:
Sub IIf_Ex1 () Dim var_1 Come lungo Dim Risultato come booleano var_1 = 5 Risultato = IIf (var_1> = 10, True, False) Debug.Print Result End Sub
Passaggio 7: eseguire questo codice premendo F5 o il pulsante Esegui nella parte superiore del riquadro e visualizzare l'output nel riquadro Output immediato.
Esempio n. 2 - VBA IIF
Supponiamo di avere i dati nel foglio di lavoro come segue:
Tutto ciò che vogliamo è un output sotto la colonna B in modo tale che il numero sia pari o dispari.
Passaggio 1: definire una nuova procedura secondaria in VBE.
Codice:
Sub IIF_Ex2 () End Sub
Passaggio 2: definire due variabili "a" e "Numbers" come Long.
Codice:
Sottotitolo IIF_Ex2 () Dim a come numero dim lungo come sottotitolo lungo
Passaggio 3: avviare un ciclo For sotto il quale si desidera eseguire il loop di tutti i valori presenti nella cella A2: A11. Il ciclo inizierà da 2 a 11 (perché abbiamo le intestazioni nella riga 1 per le colonne A e B).
Codice:
Sub IIF_Ex2 () Dim a as long long dim numero long a a = 2-11 end fine sub
Passaggio 4: utilizzare la variabile numerica definita in precedenza per memorizzare tutti i numeri dalla colonna A che variano nell'intervallo specificato utilizzando l'operatore di assegnazione (A2: A11). Utilizzare la seguente riga di codice per farlo.
Numero = Foglio1.Range ("A" e a)
Codice:
Sottotitolo IIF_Ex2 () Dim a un numero Dim lungo come lungo Per a = 2 a 11 Numero = Foglio1.Range ("A" & a) End Sub
Questa riga di codice consente a VBA di scorrere tutte le righe della colonna A da "Foglio1" in Excel una ad una in ciclo For.
Passaggio 5: utilizzare IIF per verificare se ogni valore di cella è pari o dispari e memorizzare i risultati sotto ciascuna cella della colonna B. Seguire la riga di codice farà il compito per te.
Sheet1.Range (“B” & a) .Value = IIf (Number Mod 2 = 0, “Even”, “Odd”)
Codice:
Sottotitolo IIF_Ex2 () Dim a as Dim lungo Numero lungo quanto a a = 2 a 11 Numero = Foglio1.Range ("A" & a) Foglio1.Range ("B" & a) .Valore = IIf (Numero Mod 2 = 0, "Even", "Odd") End Sub
Qui, in questa riga, vogliamo che i risultati vengano archiviati sotto ciascuna cella della colonna B da Foglio1. Pertanto abbiamo usato "Sheet1.Range (" B "& i) .Value" sul lato sinistro del pezzo di codice. Abbiamo usato IIF per verificare se il numero è divisibile per 2 usando Mod (operatore Modulo sotto VBA). Infine, vogliamo l'output se il numero è pari o dispari nella colonna B. Pertanto, questi due valori sono menzionati nell'istruzione IIF.
Passaggio 6: chiudere l'istruzione For con Next in modo che dopo ogni iterazione, il sistema si sposterà verso la cella successiva nel foglio, fino a raggiungere l'undicesima riga.
Codice:
Sottotitolo IIF_Ex2 () Dim a as Dim lungo Numero lungo quanto a a = 2 a 11 Numero = Foglio1.Range ("A" & a) Foglio1.Range ("B" & a) .Valore = IIf (Numero Mod 2 = 0, "Pari", "Dispari") Sottotitolo successivo
Passaggio 7: eccolo. Esegui questo codice premendo F5 o il pulsante Esegui posizionato nel riquadro superiore di VBE. Una volta eseguita questa macro, vedrai un output come sotto nel foglio1 (chiamato "Esempio_1") della cartella di lavoro di Excel.
Esempio n. 3 - VBA IIF
Vedremo ora una dichiarazione IIF nidificata:
Questo è lo stesso modo in cui annidiamo più condizioni IF in un singolo loop.
Supponi gli stessi dati che abbiamo usato nel caso precedente. Tutto quello che volevamo è scrivere un codice che ci permettesse di distinguere i numeri come segue:
- Se il numero è compreso tra 1 e 3 (3 inclusi), nella colonna B. dovrebbe essere indicato "Piccolo".
- Se il numero è compreso tra 4 e 6 (6 inclusi), nella colonna B. dovrebbe essere indicato "Medio".
- Se il numero è compreso tra 7 e 10 (10 inclusi), dovrebbe essere indicato "Grande" nella colonna B.
Scriviamo un codice per questo tipo di IIF:
Passaggio 1: definire una nuova procedura secondaria nel VBE che può contenere la macro.
Codice:
Sub NestedIf () End Sub
Seguire i passaggi da 2 a 4 come nell'esempio sopra (esempio 2 in questo articolo). Include la definizione delle variabili e l'aggiunta di tutti i numeri presenti nella colonna A in un ciclo For.
Passaggio 5: utilizzare il seguente codice per ottenere l'output desiderato.
Codice:
Sub NestedIf () Numero fioco lungo per a = da 2 a 11 Numero = Sheet2.Range ("A" e a) Sheet2.Range ("B" & a) .Value = IIf (Number = 7, "Large", " Medio ")) End Sub
Passaggio 6: chiudere l'istruzione For con Next ed eseguire questo codice utilizzando il pulsante F5 o Esegui presente nella barra superiore in VBE. Una volta eseguito il codice, vedrai l'output come di seguito:
Qui, in questo codice, viene utilizzato l'IIF nidificato. Sotto il primo IIF, ci viene dato ciò che dovrebbe essere stampato sotto la colonna B quando i numeri sono compresi tra 1 e 3. Sotto il secondo IIF, abbiamo menzionato ciò che dovrebbe essere stampato sotto la colonna B quando i numeri sono maggiori o uguali a 7 e sotto il stesso IIF, abbiamo fornito ciò che dovrebbe essere stampato nella colonna B quando i numeri non sono compresi tra 1 e 3 e 7 e 10.
In questo modo, possiamo aggiungere più IIF con lo stesso codice e annidarli. Questo è da questo articolo. Concludiamo con alcune cose da ricordare.
Cose da ricordare
- IIF valuta sempre entrambe le parti (VERO e FALSO) per una condizione particolare. Tuttavia, stampa la parte FALSE solo quando nulla è VERO.
- La scrittura è abbreviata rispetto a quella delle istruzioni If-Else standard.
- Non è ben noto, quindi alcuni utenti potrebbero non capire il tuo codice se hai usato IIF invece di If-Else convenzionale.
Articoli consigliati
Questa è una guida a VBA IIF. Qui discutiamo come usare Excel VBA IIF insieme ad esempi pratici e template Excel scaricabili. Puoi anche consultare i nostri altri articoli suggeriti:
- Lavorare con VBA Active Cell
- Eliminazione di una riga in VBA
- Come utilizzare Excel VBA Transpose?
- Come risolvere l'errore 1004 utilizzando VBA