And y Or en VBAEvaluación de múltiples condiciones en estructuras de decisión If...Then e If...Else.
Hasta ahora, cada estructura If evaluaba una sola condición. Sin embargo, en problemas reales frecuentemente necesitamos verificar **dos o más criterios a la vez** antes de tomar una decisión.
Los operadores lógicos nos permiten combinar varias expresiones comparativas en una sola línea de código sin necesidad de anidar múltiples bloques If.
And (Y)El operador And requiere que TODAS las condiciones evaluadas sean Verdaderas para que todo el bloque resulte Verdadero. Si al menos una condición es Falsa, todo el resultado será Falso.
| Condición 1 | Condición 2 | Resultado (Condición 1 And Condición 2) |
|---|---|---|
| Verdadera | Verdadera | VERDADERO |
| Verdadera | Falsa | FALSO |
| Falsa | Verdadera | FALSO |
| Falsa | Falsa | FALSO |
Aprobar una materia si la nota es mayor o igual a 60 Y la asistencia es mayor o igual al 80%:
Sub ValidarAprobacion()
Dim nota As Double
Dim asistencia As Double
nota = Range("A2").Value
asistencia = Range("B2").Value
If nota >= 60 And asistencia >= 80 Then
Range("C2").Value = "Aprobado"
Else
Range("C2").Value = "Reprobado"
End If
End Sub
Or (O)El operador Or requiere que AL MENOS UNA de las condiciones sea Verdadera para que el bloque completo resulte Verdadero. Únicamente dará Falso si absolutamente todas las condiciones resultan Falsas.
| Condición 1 | Condición 2 | Resultado (Condición 1 Or Condición 2) |
|---|---|---|
| Verdadera | Verdadera | VERDADERO |
| Verdadera | Falsa | VERDADERO |
| Falsa | Verdadera | VERDADERO |
| Falsa | Falsa | FALSO |
Aplicar un descuento si el cliente es "Frecuente" O si el monto total supera los $500:
Sub EvaluarDescuento()
Dim tipoCliente As String
Dim montoTotal As Double
tipoCliente = Range("A2").Value
montoTotal = Range("B2").Value
If tipoCliente = "Frecuente" Or montoTotal > 500 Then
Range("C2").Value = "Aplica Descuento 10%"
Else
Range("C2").Value = "Precio Regular"
End If
End Sub
Todos los ejercicios a continuación pertenecen a una única hoja de cálculo. Se distribuyen en rangos correlativos separados por una fila intermedia libre en la cuadrícula:
And (Filas 1 a 20)Evalúa la celda A2. Si la edad es >= 18 Y <= 65, escribe en la celda B2 el texto "Edad Válida". De lo contrario, registra "Fuera de rango".
| A | B | |
|---|---|---|
| 1 | Edad Candidato | Resultado VBA |
| 2 | 25 | [ Resultado B2 ] |
| 3 | 70 | [ Resultado B3 ] |
Comprueba si los ingresos en A6 son superiores a 2000 Y el puntaje crediticio en B6 es >= 700. Registra en C6 el estado "Crédito Aprobado" o "Rechazado".
| A | B | C | |
|---|---|---|---|
| 5 | Ingresos ($) | Puntaje Crediticio | Estado Crédito |
| 6 | 2500 | 720 | [ Resultado C6 ] |
| 7 | 1800 | 750 | [ Resultado C7 ] |
Si el stock en A10 es menor a 10 unidades Y los días sin ventas en B10 son menores a 30, escribe en C10 "Reordenar Urgente". De lo contrario, escribe "Stock OK".
| A | B | C | |
|---|---|---|---|
| 9 | Stock Actual | Días Sin Ventas | Acción Inventario |
| 10 | 5 | 12 | [ Resultado C10 ] |
| 11 | 8 | 45 | [ Resultado C11 ] |
Verifica si el usuario en A14 es igual a "Admin" Y el PIN en B14 es igual a 1234. Muestra en C14 "Acceso Concedido" o "Acceso Denegado".
| A | B | C | |
|---|---|---|---|
| 13 | Usuario | PIN | Estatus Acceso |
| 14 | Admin | 1234 | [ Resultado C14 ] |
| 15 | Admin | 0000 | [ Resultado C15 ] |
Si las ventas en A18 son superiores a 50000 Y la antigüedad en B18 es de al menos 3 años, asigna en C18 un bono de 1000. De lo contrario, asigna 0.
| A | B | C | |
|---|---|---|---|
| 17 | Ventas Anuales ($) | Antigüedad (Años) | Bono ($) |
| 18 | 65000 | 4 | [ Resultado C18 ] |
| 19 | 55000 | 1 | [ Resultado C19 ] |
Or (Filas 21 a 40)Si la edad en A22 es menor a 12 O mayor o igual a 65, escribe en B22 el mensaje "Entrada Gratis". De lo contrario, asigna "Paga Tarifa Plena".
| A | B | |
|---|---|---|
| 21 | Edad Visitante | Tipo de Tarifa |
| 22 | 8 | [ Resultado B22 ] |
| 23 | 30 | [ Resultado B23 ] |
Lee el día de la semana en A26. Si el valor es igual a "Sábado" O es igual a "Domingo", asigna en B26 el texto "Fin de Semana". De lo contrario, asigna "Día Laboral".
| A | B | |
|---|---|---|
| 25 | Día de la Semana | Clasificación |
| 26 | Domingo | [ Resultado B26 ] |
| 27 | Miércoles | [ Resultado B27 ] |
Evalúa la temperatura en A30 y la presión en B30. Si la temperatura supera los 80 °C O la presión supera los 100 PSI, escribe en C30 "ALERTA: Peligro". De lo contrario, registra "Sistema Normal".
| A | B | C | |
|---|---|---|---|
| 29 | Temperatura (°C) | Presión (PSI) | Estatus Caldera |
| 30 | 85 | 90 | [ Resultado C30 ] |
| 31 | 70 | 80 | [ Resultado C31 ] |
Si el método de pago en A34 es igual a "Tarjeta Crédito" O es igual a "Cheque", asigna en B34 un recargo del 0.03 (3%). En cualquier otro caso, asigna 0.
| A | B | |
|---|---|---|
| 33 | Forma de Pago | % Recargo |
| 34 | Tarjeta Crédito | [ Resultado B34 ] |
| 35 | Efectivo | [ Resultado B35 ] |
Comprueba la categoría en A38. Si es igual a "Tecnología" O es igual a "Hogar", registra en B38 "Aplica Cupón". De lo contrario, registra "Sin Promoción".
| A | B | |
|---|---|---|
| 37 | Categoría Producto | Estado Promoción |
| 38 | Hogar | [ Resultado B38 ] |
| 39 | Ropa | [ Resultado B39 ] |