Lección 9 de 37Funciones Lógicas y de Texto

Y, O, SI.ERROR: Combinaciones útiles

Combina funciones lógicas y maneja errores elegantemente.

12 minutos

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

  1. ¿Cuál es la diferencia entre Y y O?

  2. ¿Qué valor devuelve =Y(VERDADERO, FALSO, VERDADERO)?

  3. ¿Cuándo es preferible usar SI.ND en lugar de SI.ERROR?

  4. Escribe una fórmula que verifique si un número está entre 10 y 50 (inclusive).

  5. ¿Por qué =SI.ERROR(BUSCARV(A2,Tabla,2,FALSO),"No existe") es mejor que dejar el BUSCARV solo?

  6. 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.