Operadores Lógicos And y Or en VBA

Evaluación de múltiples condiciones en estructuras de decisión If...Then e If...Else.

💡 ¿Por qué usar operadores lógicos?

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.

1. Operador Lógico 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.

Tabla de Verdad (And):

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

Sintaxis y Ejemplo Práctico:

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

2. Operador Lógico 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.

Tabla de Verdad (Or):

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

Sintaxis y Ejemplo Práctico:

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

3. Módulo de Ejercicios Prácticos (Hoja Única de Excel)

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:

Bloque A: Ejercicios con And (Filas 1 a 20)

And Ejercicio 1: Validación de Edad Laboral (Filas 1-3)

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 ]
And Ejercicio 2: Aprobación de Crédito Bancario (Filas 5-7 | Fila 4 libre)

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 ]
And Ejercicio 3: Orden de Compra de Inventario (Filas 9-11 | Fila 8 libre)

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 ]
And Ejercicio 4: Credenciales de Acceso (Filas 13-15 | Fila 12 libre)

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 ]
And Ejercicio 5: Bono por Antigüedad y Ventas (Filas 17-19 | Fila 16 libre)

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 ]

Bloque B: Ejercicios con Or (Filas 21 a 40)

Or Ejercicio 6: Descuento Especial por Edad (Filas 21-23 | Fila 20 libre)

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 ]
Or Ejercicio 7: Detección de Fin de Semana (Filas 25-27 | Fila 24 libre)

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 ]
Or Ejercicio 8: Sistema de Alerta Industrial (Filas 29-31 | Fila 28 libre)

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 ]
Or Ejercicio 9: Recargo por Medio de Pago (Filas 33-35 | Fila 32 libre)

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 ]
Or Ejercicio 10: Promoción por Categoría de Producto (Filas 37-39 | Fila 36 libre)

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 ]