Función Excel VBA IIF
VBA IIF (también conocido como Inmediato If) es una declaración que probablemente haya visto al codificar bajo VBA y crear macros. Es similar a la función IF de Excel donde escribe una condición lógica y proporciona dos resultados, si la condición es verdadera y si la condición es falsa. Si al mirarlo lo está pensando como una función similar a VBA IF que usamos para evaluar las pruebas y condiciones lógicas, está equivocado. Parece estar cerca de VBA Si, e idealmente, se puede decir que realmente tienen una pequeña diferencia entre ellos durante la ejecución. En este artículo, obtendremos más información sobre la declaración VBA IIF y cómo usarla en nuestra vida diaria de codificación para facilitar nuestras tareas.
La declaración VBA IIF funciona de manera similar a la declaración IF de Excel. Comprueba la condición o la declaración lógica proporcionada y proporciona resultados asociados con la condición VERDADERO o cuando la condición es FALSA.
Sintaxis de IIF en Excel VBA
La sintaxis para la función VBA IIF en Excel es la siguiente:
Dónde,
- Expresión: es la condición lógica que queríamos evaluar bajo la función IIF
- TruePart: es el valor / salida que esperamos, cuando la condición / expresión lógica es VERDADERA.
- FalsePart: es el valor / salida que esperamos, cuando la condición / expresión lógica es FALSE.
¿Cómo utilizar Excel VBA IIF?
Ahora intentemos con algunos ejemplos de VBA IIF en Excel.
Puede descargar esta plantilla de Excel VBA IIF aquí - Plantilla de Excel VBA IIFTomemos un ejemplo simple para ver cómo funciona IIF en Microsoft VBA.
Ejemplo # 1 - VBA IIF
Paso 1: abra un Editor de Visual Basic (VBE). Vaya a la pestaña Insertar y haga clic en Módulo . Agregará un nuevo módulo bajo VBE.
Paso 2: defina un nuevo subprocedimiento que pueda contener su macro en este módulo.
Código:
Sub IIf_Ex1 () End Sub
Paso 3: Defina dos nuevas variables Var_1 como Long y Result con el tipo de datos como una variante.
Código:
Sub IIf_Ex1 () Dim var_1 Como Long Dim Result As Boolean End Sub
Paso 4: Asigne un valor numérico a Var_1 para que podamos usar esta variable para verificar la condición lógica de IIF.
Código:
Sub IIf_Ex1 () Dim var_1 como Long Dim Result As Boolean var_1 = 5 End Sub
Paso 5: Use la variable Resultado para almacenar la condición lógica IIF bajo la cual vamos a verificar si el valor asignado a Var_1 es mayor o igual a 10.
Código:
Sub IIf_Ex1 () Dim var_1 como Long Dim Result As Boolean var_1 = 5 Result = IIf (var_1> = 10, True, False) End Sub
Paso 6: Ahora, use Debug.Print para imprimir el resultado de la condición IIF en el panel del visor de resultados inmediatos.
Código:
Sub IIf_Ex1 () Dim var_1 Como Long Dim Result As Boolean var_1 = 5 Result = IIf (var_1> = 10, True, False) Debug.Print Result End Sub
Paso 7: Ejecute este código presionando F5 o el botón Ejecutar en la parte superior del panel y vea la salida en Panel de salida inmediata.
Ejemplo # 2 - VBA IIF
Supongamos que tenemos datos en la hoja de trabajo de la siguiente manera:
Todo lo que queremos es una salida en la columna B de modo que, o el número sea par o impar.
Paso 1: defina un nuevo subprocedimiento en VBE.
Código:
Sub IIF_Ex2 () End Sub
Paso 2: Defina dos variables "a" y "Números" como Long.
Código:
Sub IIF_Ex2 () Dim a As Long Dim Number As Long End Sub
Paso 3: Comience un ciclo For bajo el cual queremos recorrer todos los valores presentes en la celda A2: A11. El bucle comenzará de 2 a 11 (porque tenemos encabezados en la fila 1 para las columnas A y B).
Código:
Sub IIF_Ex2 () Dim a As Long Número Dim As Long para a = 2 a 11 End Sub
Paso 4: Use la variable de número definida anteriormente para almacenar todos los números de la columna A que varían en el rango dado usando el operador de asignación (A2: A11). Use la siguiente línea de código para hacerlo.
Número = Hoja1.Rango ("A" y a)
Código:
Sub IIF_Ex2 () Dim a As Long Número Dim As Long Para a = 2 a 11 Number = Sheet1.Range ("A" & a) End Sub
Esta línea de código permite que VBA se ejecute a través de todas las filas de la columna A desde "Sheet1" en Excel una por una en el bucle For.
Paso 5: use IIF para verificar si el valor de cada celda es par o impar y almacene los resultados debajo de cada celda de la columna B. La siguiente línea de código hará la tarea por usted.
Sheet1.Range ("B" & a) .Value = IIf (Número Mod 2 = 0, "Even", "Odd")
Código:
Sub IIF_Ex2 () Dim a As Long Número Dim As Long Para a = 2 a 11 Number = Sheet1.Range ("A" & a) Sheet1.Range ("B" & a) .Value = IIf (Number Mod 2 = 0, "Even", "Odd") End Sub
Aquí, en esta línea, queremos que los resultados se almacenen en cada celda de la columna B de la Hoja1. Por lo tanto, utilizamos "Sheet1.Range (" B "& i) .Value" en el lado izquierdo del código. Usamos IIF para verificar si el número es divisible por 2 usando Mod (operador de módulo bajo VBA). Finalmente, queremos que el resultado sea si el número es par o impar en la columna B. Por lo tanto, estos dos valores se mencionan en la declaración IIF.
Paso 6: cierre el bucle For con la instrucción Next para que después de cada iteración, el sistema se mueva hacia la siguiente celda en la hoja, hasta llegar a la 11ma fila.
Código:
Sub IIF_Ex2 () Dim a As Long Número Dim As Long Para a = 2 a 11 Number = Sheet1.Range ("A" & a) Sheet1.Range ("B" & a) .Value = IIf (Number Mod 2 = 0, "Even", "Odd") Siguiente Fin Sub
Paso 7: esto es todo. Ejecute este código presionando F5 o el botón Ejecutar ubicado en el panel superior de VBE. Una vez que ejecute esta macro, verá una salida como se muestra a continuación en la hoja 1 (denominada "Ejemplo_1") del libro de Excel.
Ejemplo # 3 - VBA IIF
Ahora veremos una declaración IIF anidada:
Esta es la misma forma en que anidamos múltiples condiciones IF en un solo bucle.
Suponga los mismos datos que usamos en el caso anterior. Todo lo que queríamos era escribir un código que nos permitiera distinguir entre números de la siguiente manera:
- Si el número está entre 1 y 3 (3 incluidos), debe mencionar "Pequeño" en la columna B.
- Si el número está entre 4 y 6 (6 incluidos), debe mencionar "Medio" en la columna B.
- Si el número está entre 7 y 10 (10 incluidos), debe mencionar "Grande" en la columna B.
Escribamos un código para este tipo de IIF:
Paso 1: defina un nuevo subprocedimiento en su VBE que pueda contener su macro.
Código:
Sub NestedIf () End Sub
Siga del Paso 2 al Paso 4 igual que en el ejemplo anterior (Ejemplo 2 en este artículo). Incluye definir variables y agregar todos los números presentes en la columna A debajo de un bucle For.
Paso 5: utilice el siguiente código para obtener el resultado deseado.
Código:
Sub NestedIf () Dim Número tan largo para a = 2 a 11 Número = Sheet2.Range ("A" & a) Sheet2.Range ("B" & a) .Value = IIf (Number = 7, "Large", " Medio ")) Fin Sub
Paso 6: cierre el bucle For con la instrucción Next y ejecute este código usando el botón F5 o Run presente en la cinta superior debajo de VBE. Una vez que ejecute el código, verá el resultado de la siguiente manera:
Aquí, en este código, se está utilizando el IIF anidado. Bajo el primer IIF, se nos da lo que debe imprimirse debajo de la columna B cuando los números están entre 1 y 3. Bajo el segundo IIF, mencionamos lo que debe imprimirse debajo de la columna B cuando los números son mayores o iguales a 7 y debajo del mismo IIF, proporcionamos lo que debe imprimirse en la columna B cuando los números no están entre 1 y 3 y entre 7 y 10.
De esta manera, podemos agregar múltiples IIF bajo el mismo código y anidarlos. Esto es de este artículo. Vamos a terminar con algunas cosas para recordar.
Cosas para recordar
- IIF siempre evalúa ambas partes (VERDADERO y FALSO) para una condición particular. Sin embargo, solo imprime la parte FALSO cuando nada es VERDADERO.
- La escritura se acorta más que la de las declaraciones estándar If-Else.
- No se conoce bien, por lo tanto, es posible que algún usuario no entienda su código si ha utilizado IIF en lugar de If-Else convencional.
Artículos recomendados
Esta es una guía de VBA IIF. Aquí discutimos cómo usar Excel VBA IIF junto con ejemplos prácticos y una plantilla de Excel descargable. También puede consultar nuestros otros artículos sugeridos:
- Trabajando con VBA Active Cell
- Eliminar una fila en VBA
- ¿Cómo utilizar Excel VBA Transpose?
- Cómo reparar el error 1004 usando VBA