Y, O, SI.ERROR: Combinaciones útiles
Combina funciones lógicas y maneja errores elegantemente.
Las funciones lógicas Y (AND) y O (OR) te permiten evaluar múltiples condiciones simultáneamente. Combinadas con SI y las funciones de manejo de errores, crean fórmulas robustas y profesionales.
La función Y (AND): Todas las condiciones deben cumplirse
La función Y devuelve VERDADERO solo si todas las condiciones son verdaderas.
Sintaxis
=Y(condición1, condición2, condición3, ...)
Ejemplos básicos
// Verificar si un número está en un rango
=Y(B2>=18, B2<=65) // Entre 18 y 65 años
// Verificar múltiples criterios de aprobación
=Y(C2>=60, D2>=60, E2>=60) // Todas las materias aprobadas
// Verificar disponibilidad de producto
=Y(F2>0, G2="Activo") // Hay stock Y está activo
Combinando Y con SI
El patrón más común es usar Y dentro de SI:
=SI(Y(condición1, condición2), valor_si_verdadero, valor_si_falso)
Ejemplo: Aprobar préstamo
Un préstamo se aprueba si el cliente tiene buen historial Y ingresos suficientes:
=SI(Y(B2="Bueno", C2>=30000), "Aprobado", "Rechazado")
Ejemplo: Bono por cumplimiento total
Un empleado recibe bono solo si cumple ventas Y asistencia:
=SI(Y(D2>=E2, F2>=95), G2*0.15, 0)
// D2=ventas, E2=meta, F2=% asistencia, G2=salario
Tabla de verdad de Y
| Condición 1 | Condición 2 | Y(C1, C2) |
|---|---|---|
| VERDADERO | VERDADERO | VERDADERO |
| VERDADERO | FALSO | FALSO |
| FALSO | VERDADERO | FALSO |
| FALSO | FALSO | FALSO |
La función O (OR): Al menos una condición debe cumplirse
La función O devuelve VERDADERO si al menos una condición es verdadera.
Sintaxis
=O(condición1, condición2, condición3, ...)
Ejemplos básicos
// Verificar si es fin de semana
=O(A2="Sábado", A2="Domingo")
// Verificar si requiere atención
=O(B2="Urgente", B2="Crítico")
// Verificar si es cliente especial
=O(C2="Premium", C2="VIP", D2>=100000)
Combinando O con SI
=SI(O(condición1, condición2), valor_si_verdadero, valor_si_falso)
Ejemplo: Descuento especial
Aplicar descuento si es cliente antiguo O compra grande:
=SI(O(B2>=5, C2>=10000), D2*0.10, 0)
// B2=años cliente, C2=monto compra, D2=total
Ejemplo: Prioridad de soporte
Marcar como prioritario si es cliente premium O el problema es crítico:
=SI(O(B2="Premium", C2="Crítico"), "Prioridad Alta", "Normal")
Tabla de verdad de O
| Condición 1 | Condición 2 | O(C1, C2) |
|---|---|---|
| VERDADERO | VERDADERO | VERDADERO |
| VERDADERO | FALSO | VERDADERO |
| FALSO | VERDADERO | VERDADERO |
| FALSO | FALSO | FALSO |
Combinando Y con O
Puedes crear lógica compleja anidando Y y O:
Ejemplo: Criterios de admisión
Un estudiante es admitido si:
- Tiene promedio >= 85 Y buen comportamiento, O
- Tiene recomendación especial
=SI(O(Y(B2>=85, C2="Bueno"), D2="Sí"), "Admitido", "Rechazado")
Ejemplo: Clasificación de leads
Un lead es "caliente" si:
- Visitó la web más de 5 veces Y descargó contenido, O
- Solicitó demo
=SI(O(Y(B2>5, C2="Sí"), D2="Sí"), "Caliente", "Frío")
Ejemplo: Elegibilidad para promoción
Elegible si:
- Antigüedad >= 3 años Y evaluación >= 80, O
- Antigüedad >= 5 años (independiente de evaluación)
=SI(O(Y(B2>=3, C2>=80), B2>=5), "Elegible", "No elegible")
La función NO (NOT): Invertir resultado
NO invierte el valor lógico: convierte VERDADERO en FALSO y viceversa.
Sintaxis
=NO(valor_lógico)
Ejemplos
// Verificar que NO está vacío
=NO(ESBLANCO(A2))
// Verificar que NO es fin de semana
=NO(O(A2="Sábado", A2="Domingo"))
// Verificar que NO hay errores
=NO(ESERROR(B2/C2))
Combinando NO con SI
// Procesar solo si NO está cancelado
=SI(NO(D2="Cancelado"), B2*C2, 0)
// Incluir solo si NO es prueba
=SI(NO(E2="Test"), "Incluir", "Excluir")
SI.ERROR: Manejo elegante de errores
SI.ERROR captura cualquier error y devuelve un valor alternativo.
Sintaxis
=SI.ERROR(valor, valor_si_error)
Errores que captura SI.ERROR
| Error | Causa común |
|---|---|
| #DIV/0! | División entre cero |
| #N/A | BUSCARV no encuentra el valor |
| #VALOR! | Tipo de dato incorrecto |
| #REF! | Referencia no válida |
| #NOMBRE? | Nombre de función mal escrito |
| #NUM! | Número inválido |
| #NULO! | Intersección de rangos incorrecta |
Patrón más usado: BUSCARV con SI.ERROR
=SI.ERROR(BUSCARV(A2, Tabla, 2, FALSO), "No encontrado")
Este patrón es esencial para evitar que tus reportes muestren errores #N/A.
Ejemplos prácticos
// División segura
=SI.ERROR(B2/C2, 0)
// Buscar precio con mensaje amigable
=SI.ERROR(BUSCARV(A2, Productos, 3, FALSO), "Producto no existe")
// Buscar datos de cliente
=SI.ERROR(BUSCARV(B2, Clientes, 4, FALSO), "Sin datos")
// Cálculo de margen seguro
=SI.ERROR((C2-B2)/C2, 0)
SI.ERROR con cálculos complejos
// Tasa de conversión segura
=SI.ERROR(CONTAR.SI(Rango, "Convertido")/CONTARA(Rango), 0)
// Promedio que ignora errores en origen
=SI.ERROR(PROMEDIO(A2:A100), "Sin datos")
// Índice + Coincidir con manejo de error
=SI.ERROR(INDICE(Datos, COINCIDIR(A2, Columna, 0), 3), "No encontrado")
SI.ND: Captura específica de #N/A
SI.ND (IFNA) solo captura el error #N/A, dejando pasar otros errores.
Sintaxis
=SI.ND(valor, valor_si_na)
Cuándo usar SI.ND vs SI.ERROR
| Función | Usa cuando... |
|---|---|
| SI.ERROR | Quieres capturar cualquier error |
| SI.ND | Solo quieres manejar #N/A (BUSCARV, COINCIDIR) |
Ventaja de SI.ND: Si hay un error diferente a #N/A (como #REF! o #DIV/0!), lo verás y podrás corregirlo.
Ejemplo comparativo
// SI.ERROR: oculta TODOS los errores (puede enmascarar problemas)
=SI.ERROR(BUSCARV(A2, Tabla, 2, FALSO)/B2, 0)
// SI.ND: solo maneja #N/A, otros errores se muestran
=SI.ND(BUSCARV(A2, Tabla, 2, FALSO), 0)/B2
Patrón recomendado para BUSCARV
// Mejor práctica: usar SI.ND
=SI.ND(BUSCARV(A2, TablaPrecios, 2, FALSO), "Sin precio")
Patrones útiles de combinación
Patrón 1: Validación completa de datos
// Verificar que todos los campos obligatorios están llenos
=SI(Y(NO(ESBLANCO(A2)), NO(ESBLANCO(B2)), NO(ESBLANCO(C2))), "Completo", "Incompleto")
Patrón 2: BUSCARV con valor por defecto inteligente
// Si no encuentra el descuento, usar 0%
=SI.ND(BUSCARV(A2, TablaDescuentos, 2, FALSO), 0)
// Si no encuentra el precio, usar precio estándar de celda E1
=SI.ND(BUSCARV(A2, TablaPrecios, 2, FALSO), $E$1)
Patrón 3: Múltiples búsquedas con fallback
// Buscar primero en tabla principal, si no existe, en secundaria
=SI.ND(BUSCARV(A2, TablaPrincipal, 2, FALSO), SI.ND(BUSCARV(A2, TablaSecundaria, 2, FALSO), "No encontrado"))
Patrón 4: Cálculo condicional con protección
// Calcular comisión solo si hay ventas y no hay error
=SI.ERROR(SI(B2>0, B2*BUSCARV(A2, TasasComision, 2, FALSO), 0), 0)
Patrón 5: Validación de rango con mensaje
// Verificar si el valor está en rango válido
=SI(Y(B2>=1, B2<=100), "Válido", SI(ESBLANCO(B2), "Requerido", "Fuera de rango"))
Casos de uso empresariales
Caso 1: Sistema de aprobación de gastos
Aprobar automáticamente si:
- Monto <= $500 Y categoría no es "Viajes"
- O si tiene preaprobación
=SI(O(Y(B2<=500, C2<>"Viajes"), D2="Sí"), "Auto-aprobado", "Requiere revisión")
Caso 2: Alerta de inventario
Generar alerta si:
- Stock < mínimo Y producto está activo
- O si hay orden pendiente
=SI(O(Y(B2<C2, D2="Activo"), E2>0), "ALERTA", "OK")
Caso 3: Cálculo de precio con descuento
// Precio base con búsqueda + descuento condicional
=SI.ND(BUSCARV(A2, Precios, 2, FALSO), 0) * SI(O(B2="VIP", C2>=10), 0.9, 1)
Caso 4: Evaluación de crédito
// Puntaje de crédito: alto si cumple todos los criterios
=SI(Y(
B2>=650, // Score mínimo
C2<=0.4, // Ratio deuda/ingreso <= 40%
D2>=2, // Antigüedad laboral >= 2 años
NO(ESBLANCO(E2)) // Tiene referencias
), "APROBADO", "REVISAR")
Manejo de errores en fórmulas complejas
Estrategia 1: Envolver toda la fórmula
=SI.ERROR(
BUSCARV(A2, Tabla1, 2, FALSO) * BUSCARV(A2, Tabla2, 3, FALSO) / B2,
0
)
Estrategia 2: Proteger cada componente
=SI.ND(BUSCARV(A2, Tabla1, 2, FALSO), 0) *
SI.ND(BUSCARV(A2, Tabla2, 3, FALSO), 1) /
SI(B2=0, 1, B2)
La estrategia 2 es mejor para depuración porque puedes identificar cuál componente falla.
Estrategia 3: Validar antes de calcular
=SI(Y(
NO(ESERROR(BUSCARV(A2, Tabla1, 2, FALSO))),
NO(ESERROR(BUSCARV(A2, Tabla2, 3, FALSO))),
B2<>0
),
BUSCARV(A2, Tabla1, 2, FALSO) * BUSCARV(A2, Tabla2, 3, FALSO) / B2,
"Error en datos"
)
Errores comunes y soluciones
Error 1: Usar Y/O sin SI
// Problema: Devuelve VERDADERO/FALSO, no un valor útil
=Y(B2>=60, C2>=60)
// Solución: Envolver en SI
=SI(Y(B2>=60, C2>=60), "Aprobado", "Reprobado")
Error 2: Confundir Y con O
// Problema: Quiere "solo si cumple ambas" pero usa O
=SI(O(B2>=18, C2<65), "Elegible", "No") // Uno u otro basta
// Solución: Usar Y para "ambas condiciones"
=SI(Y(B2>=18, C2<65), "Elegible", "No") // Debe cumplir ambas
Error 3: SI.ERROR que oculta problemas
// Problema: Oculta errores que deberías corregir
=SI.ERROR(A2+B2+C2/D2, 0)
// Solución: Ser específico sobre qué manejar
=A2+B2+SI.ERROR(C2/D2, 0)
Error 4: Paréntesis mal colocados
// Problema: Y está fuera del SI
=Y(SI(B2>=60, "Aprobado", "Reprobado"), C2>=60)
// Solución: Y dentro del SI
=SI(Y(B2>=60, C2>=60), "Aprobado", "Reprobado")
Práctica: Ejercicios propuestos
Ejercicio 1: Validación de formulario
Crear fórmula que verifique si un formulario está completo (nombre, email, teléfono no vacíos) Y el email contiene "@".
Ejercicio 2: Sistema de alertas
Crear alerta "CRÍTICO" si: stock < 10 Y demanda > 100, O si días sin rotación > 30.
Ejercicio 3: BUSCARV protegido
Buscar el precio de un producto y multiplicar por cantidad. Si el producto no existe, mostrar "Producto no válido".
Puntos clave de esta lección
- Y (AND) devuelve VERDADERO solo si todas las condiciones se cumplen
- O (OR) devuelve VERDADERO si al menos una condición se cumple
- NO (NOT) invierte el resultado lógico
- SI.ERROR captura cualquier error y devuelve un valor alternativo
- SI.ND solo captura #N/A, ideal para BUSCARV
- El patrón
=SI.ERROR(BUSCARV(...), "mensaje")es esencial para reportes - Puedes combinar Y y O para crear lógica compleja
- Prefiere SI.ND sobre SI.ERROR cuando uses BUSCARV para no ocultar otros errores
Próxima lección
En la siguiente lección explorarás las funciones de texto: CONCATENAR, TEXTO, EXTRAE y más. Aprenderás a manipular y limpiar datos de texto, una habilidad fundamental para preparar datos.
Quiz de comprensión
¿Cuál es la diferencia entre Y y O?
¿Qué valor devuelve
=Y(VERDADERO, FALSO, VERDADERO)?¿Cuándo es preferible usar SI.ND en lugar de SI.ERROR?
Escribe una fórmula que verifique si un número está entre 10 y 50 (inclusive).
¿Por qué
=SI.ERROR(BUSCARV(A2,Tabla,2,FALSO),"No existe")es mejor que dejar el BUSCARV solo?Escribe una fórmula que devuelva "Prioridad" si el cliente es "VIP" O el monto es mayor a $10,000.
¿Completaste esta lección?
Marca esta lección como completada. Tu progreso se guardará en tu navegador.