Casi todas las fórmulas de un libro calculan algo. Las fórmulas lógicas deciden algo: si un pedido tiene derecho a descuento, si un envío cuenta como tardío, si una fila pertenece siquiera a este informe. Esa diferencia importa más de lo que parece, porque un cálculo que sale mal suele ser evidente y una decisión que sale mal casi nunca lo es. Un total que pone 98.000 cuando los pedidos suman 103.830 se cuestiona antes de comer; una columna de descuentos que paga un 5% donde debería pagar un 12% se ve exactamente igual que una columna de descuentos que funciona.
Esta guía trata de escribir decisiones que sigas entendiendo en marzo. Cubre SI y el argumento que todo el mundo se deja, las escaleras anidadas y el error de orden que vive dentro de ellas, SI.CONJUNTO y el valor por defecto que no te da, Y/O/NO y su comportamiento sorprendente sobre rangos, la aritmética booleana que los sustituye donde ellos no llegan, SI.ERROR frente a SI.ND, CAMBIAR, y el punto en el que la respuesta correcta es dejar de anidar y construir una tabla.
Consejo: Todos los ejemplos de abajo funcionan sobre la tabla de pedidos que aparece tras la sección 1. Cópiala en una hoja en blanco empezando en A1 y las referencias de celda coincidirán exactamente.
SI.CONJUNTOyCAMBIARnecesitan Excel 2019 o posterior;BUSCARX, en la sección 9, necesita Excel 365 o 2021. Todo lo demás funciona en cualquier versión que siga en uso.
1) Qué Devuelve Realmente SI
=SI(prueba_lógica, valor_si_verdadero, [valor_si_falso])
El modelo mental que menos disgustos da: SI no "ejecuta" una rama u otra. Evalúa la prueba y obtiene VERDADERO o FALSO, y entonces devuelve uno de los dos valores que ya tenía en la mano. Es un selector, no un controlador.
=SI(F2>7, "Tardío", "A tiempo")
Resultado: A tiempo — SO-1041 se envió en 2 días.
El tercer argumento es opcional, y esa opción es una trampa. Si lo omites:
=SI(F2>7, "Tardío")
un pedido rápido no devuelve un vacío. Devuelve la palabra literal FALSO, en mitad de tu informe, en una columna de texto. Excel tenía que devolver algo, y FALSO es lo que tiene. Si quieres nada, di "nada" de forma explícita:
=SI(F2>7, "Tardío", "")
Esas dos comillas son una cadena de texto vacía, no una celda vacía, y conviene saberlo antes de apuntar CONTAR.BLANCO o ESBLANCO al resultado y llevarte una respuesta que no esperabas. Una celda con "" no está en blanco: contiene una cadena de longitud cero.
Pedidos Mayoristas de un Trimestre
Diez pedidos de cinco clientes y tres niveles. Dos detalles son intencionados: SO-1047 se canceló y quedó en el registro con cero unidades, que es lo que hace que la división por cero de la sección 7 sea real y no hipotética, y 4.900 se queda justo por debajo del tramo de 5.000 para que las pruebas de límite de la sección 3 tengan algo que atrapar. Los datos están en A2:G11.
fxLas celdas con fórmulas están resaltadas en verde
Pasa el mouse sobre las celdas con fórmulas para ver la fórmula y resaltar las celdas referenciadas
2) La Prueba: Operadores de Comparación y Dos Trampas Silenciosas
🎯 Escenario: Quieres marcar los pedidos lo bastante grandes como para necesitar una segunda firma, antes de que nadie discuta qué significa "grande".
Seis operadores hacen casi todo el trabajo: =, <>, >, <, >=, <=. Cualquiera de ellos produce VERDADERO o FALSO por sí solo, sin ningún SI alrededor: escribe =E2>=10000 en una celda vacía y obtienes VERDADERO. Esa es la costumbre más útil de todo este artículo: cuando una decisión sale mal, saca la prueba fuera del SI y mira qué devuelve de verdad.
| Escrito | Se lee como | En la fila 2 |
|---|---|---|
=E2>=10000 | importe de al menos 10.000 | VERDADERO (12.400) |
=F2>7 | enviado en más de 7 días | FALSO (2 días) |
=C2<>"Bronze" | el nivel es cualquiera menos Bronze | VERDADERO (Gold) |
=G2=0 | no volvió nada | VERDADERO |
Trampa uno: la comparación de texto ignora mayúsculas. =C2="gold" devuelve VERDADERO para una celda que contiene Gold. Eso es cómodo hasta que deja de serlo: si tus datos distinguen de verdad ABC de abc (los códigos de producto a veces lo hacen), = no verá la diferencia y necesitas =IGUAL(C2,"Gold").
Trampa dos: números que son texto. Un valor importado como texto queda alineado a la izquierda y falla todas las comparaciones numéricas en silencio. ="12400">=10000 es VERDADERO, pero por el motivo equivocado: Excel compara una cadena de texto con un número y el texto siempre ordena por encima de los números, así que cualquier valor de texto pasa cualquier prueba >= contra un número. Una columna de descuentos construida sobre eso es generosa al 100%. =ESNUMERO(E2) a lo largo de la columna cuesta diez segundos y lo zanja.
Error Común:
=SI(E2>=10000, "Sí", "No")y=SI(E2>10000, "Sí", "No")se diferencian en un único valor: el propio 10.000. Nadie lo nota hasta que aparece el pedido que cae exactamente en el límite, y para entonces la regla lleva dos trimestres en producción. Decide en voz alta si el límite entra o no, y luego escribe el operador que lo diga.
3) SI Anidado: Tramos, y el Orden Que Decide la Respuesta
🎯 Escenario: Descuento por volumen — 12% a partir de 20.000, 8% a partir de 10.000, 5% a partir de 5.000 y nada por debajo.
Un SI dentro del hueco valor_si_falso de otro SI es como una prueba se convierte en una escalera:
=SI(E2>=20000, 12%, SI(E2>=10000, 8%, SI(E2>=5000, 5%, 0)))
Resultado a lo largo de la columna: 8%, 0%, 12%, 0%, 5%, 5%, 0%, 8%, 0%, 12%.
Léelo como una secuencia de preguntas hechas en orden, donde el primer VERDADERO gana y todo lo que hay por debajo ni siquiera se evalúa. 12.400 no supera la prueba de 20.000, sí la de 10.000, y ahí se detiene.
Esa regla de "gana el primer VERDADERO" es todo el juego, y es donde vive el error clásico. Escribe los mismos tramos en orden ascendente:
=SI(E2>=5000, 5%, SI(E2>=10000, 8%, SI(E2>=20000, 12%, 0)))
Resultado para SO-1043: 5% sobre un pedido de 28.700 — porque 28.700 es efectivamente al menos 5.000, y el primer peldaño lo atrapó. La fórmula no tiene error, ni aviso, ni color. Devuelve un número plausible y le paga de menos a tu mayor cliente casi 2.000. Las condiciones que se solapan hay que probarlas desde el extremo más específico hacia dentro: tramos descendentes en orden descendente, ascendentes en orden ascendente.
Lo otro que merece la pena hacer aquí es enseñarle a la escalera el valor que se va a encontrar de verdad. Pruébala contra 4.900 (SO-1049) y contra 5.000, y luego contra 19.999 y 20.000. Cuatro comprobaciones, y todos los límites de la regla quedan clavados.
Error Común: Excel permite 64 niveles de anidamiento, lo cual no es un permiso. Pasados tres peldaños la fórmula deja de ser legible, los paréntesis de cierre dejan de ser contables y —el coste de verdad— la regla deja de ser visible para cualquiera que no esté editando la barra de fórmulas. La sección 9 va de qué hacer en su lugar.
4) SI.CONJUNTO: La Misma Escalera Sin el Montón de Paréntesis
=SI.CONJUNTO(prueba1, valor1, [prueba2, valor2], ...)
SI.CONJUNTO coge la escalera y la aplana en parejas, que es la misma lógica con la cuarta parte de la puntuación:
=SI.CONJUNTO(E2>=20000, 12%, E2>=10000, 8%, E2>=5000, 5%, VERDADERO, 0)
Resultado: 8% para la fila 2 — idéntico a la versión anidada, y ahora los cuatro tramos se leen a lo largo de la fórmula como las filas de una tabla.
Las parejas se siguen evaluando de arriba abajo y sigue ganando el primer VERDADERO, así que el error de orden de la sección 3 se traslada aquí intacto. Lo que no se traslada es el "si no". El valor_si_falso final de una escalera anidada es el cajón de sastre; SI.CONJUNTO no tiene ese hueco, y un SI.CONJUNTO en el que no coincide nada devuelve #N/D:
=SI.CONJUNTO(E3>=20000, 12%, E3>=10000, 8%, E3>=5000, 5%)
Resultado para SO-1042 (3.150): #N/D.
El modismo para un valor por defecto es una última pareja cuya prueba sea el literal VERDADERO: siempre coincide, así que recoge todo lo que se coló. Hay quien prefiere 1=1; ambos funcionan y VERDADERO es más claro.
Consejo:
SI.CONJUNTOllegó con Excel 2019. En Excel 2016 y anteriores es#¿NOMBRE?, y el archivo se abrirá igualmente — simplemente muestra un error donde antes había un número. Si el libro viaja, elSIanidado sigue siendo la opción compatible.
5) Y, O, NO — y Por Qué Reducen una Columna Entera
🎯 Escenario: Todo pedido necesita revisión si tardó más de 10 días en enviarse o vale 25.000 o más.
=Y(prueba1, prueba2, ...) todas deben ser VERDADERO
=O(prueba1, prueba2, ...) basta con que una lo sea
=NO(prueba) invierte VERDADERO y FALSO
Casi siempre aparecen dentro del primer argumento de SI:
=SI(O(F2>10, E2>=25000), "Revisar", "OK")
Resultado a lo largo de la columna: cuatro filas Revisar — SO-1043 (28.700), SO-1045 (12 días), SO-1049 (11 días) y SO-1050 (14 días). Las otras seis ponen OK.
Y estrecha en lugar de ensanchar:
=SI(Y(C2="Gold", E2>=20000), "Cuenta clave", "")
Resultado: Cuenta clave en solo dos filas — SO-1043 y SO-1050. SO-1041 es Gold pero se queda en 12.400; SO-1048 llega a 15.250 pero es Silver.
NO es sobre todo cuestión de legibilidad. =NO(G2=0) y =G2<>0 devuelven lo mismo; usa el que se lea como la frase que dirías en voz alta.
Y ahora el comportamiento que sorprende a todo el mundo. Y y O no trabajan fila a fila sobre un rango: consumen todo lo que les des y devuelven un valor:
=Y(F2:F11>10)
Resultado: un único FALSO — que significa "no todos los pedidos tardaron más de 10 días", lo cual es cierto e inútil. No hay forma de sacar de ahí una respuesta de diez filas, porque Y es un agregador por diseño. En cuanto quieras un VERDADERO/FALSO por fila a partir de condiciones combinadas dentro de una sola fórmula, necesitas la sección 6.
6) Aritmética Booleana: * para Y, + para O
Excel guarda VERDADERO como 1 y FALSO como 0 en cuanto haces aritmética con ellos. Ese único hecho sustituye a Y y O en todos los sitios a los que no pueden ir.
| Lógica | Se escribe | Porque |
|---|---|---|
| A y B | (A)*(B) | 1×1 = 1, cualquier cosa con un 0 = 0 |
| A o B | (A)+(B) | cualquier VERDADERO hace que la suma sea ≥ 1 |
| no A | 1-(A) | invierte 1 y 0 |
🎯 Escenario: Contar los pedidos Gold de al menos 20.000, sin añadir una columna auxiliar.
=SUMAPRODUCTO((C2:C11="Gold")*(E2:E11>=20000))
Resultado: 2
Cada paréntesis produce una lista de diez valores VERDADERO/FALSO; multiplicarlas empareja las filas y da 1 solo donde se cumplieron ambas; SUMAPRODUCTO suma los unos. Cambia * por + y obtienes el recuento de la O — con una pega, porque una fila que cumpla ambas condiciones aportaría 2:
=SUMAPRODUCTO(--((C2:C11="Gold")+(F2:F11>10)>0))
Resultado: 5 — los cuatro pedidos Gold más SO-1049, un pedido Silver que tardó 11 días. Comparar la suma con >0 convierte "cuántas condiciones coincidieron" otra vez en un sí/no antes de contar.
Ese -- inicial es el doble menos unario, y existe porque SUMAPRODUCTO suma números, no booleanos. Niega una vez para obtener −1/0 y niega otra vez para obtener 1/0. Multiplicar por 1 hace el mismo trabajo si te resulta más legible *1:
=SUMAPRODUCTO(--(E2:E11>=10000))
Resultado: 4 — los pedidos SO-1041, SO-1043, SO-1048 y SO-1050.
Consejo: Para contar sin más,
CONTAR.SI.CONJUNTOes más corto y más rápido, y deberías usarlo. La aritmética booleana se gana su sitio cuando la condición es algo queCONTAR.SI.CONJUNTOno puede expresar — una comparación entre dos columnas, un cálculo dentro de la prueba, una O entre campos distintos — o cuando necesitas la propia lista deVERDADERO/FALSOpor fila para alimentar aFILTRAR.
7) SI.ERROR y SI.ND: Atrapa Solo el Error Correcto
🎯 Escenario: Precio unitario medio por pedido. SO-1047 se canceló y figura en el registro con cero unidades.
=E2/D2
Resultado: 25,83 en la fila 2, y #¡DIV/0! en la fila 8, que a partir de ahí envenena todos los totales que la incluyan.
=SI.ERROR(E2/D2, "—")
Resultado: 25,83, y una raya en el pedido cancelado en lugar de un error.
SI.ERROR los atrapa todos: #¡DIV/0!, #N/D, #¡VALOR!, #¡REF!, #¿NOMBRE?, #¡NUM!, #¡NULO!. Esa es su comodidad y su peligro. Una búsqueda envuelta en SI.ERROR(..., 0) devuelve 0 cuando el valor realmente no está —correcto— y también devuelve 0 cuando escribiste mal el nombre de la función, apuntaste a un rango borrado o le pasaste texto donde quería un número. El libro muestra una columna limpia de ceros y ninguna señal de que algo va mal. Esta es la forma más eficaz que existe de ocultarte a ti mismo una fórmula rota durante seis meses.
SI.ND es la versión disciplinada: atrapa #N/D y nada más:
=SI.ND(BUSCARX(A2, $J$2:$J$20, $K$2:$K$20), "No está en la tarifa")
Un producto que falta queda resuelto; un #¡REF! de una columna borrada sigue apareciendo como #¡REF!, que es exactamente lo que quieres, porque ese es tu error y no un hueco en los datos.
Error Común: envuelve lo más pequeño que pueda fallar, no la fórmula entera.
=SI.ERROR(A*B/C + BUSCARV(...), 0)esconde fallos de cuatro sitios distintos detrás de un mismo cero.=A*B/SI.ERROR(C,1) + SI.ND(BUSCARV(...),0)dice para qué sirve cada alternativa.
8) CAMBIAR: Para Comparar un Valor, No para Probar una Condición
=CAMBIAR(expresión, valor1, resultado1, [valor2, resultado2], ..., [predeterminado])
Cuando cada peldaño de tu escalera compara la misma celda con un valor fijo distinto, CAMBIAR lo dice en la mitad de espacio:
=CAMBIAR(C2, "Gold", 12%, "Silver", 6%, "Bronze", 2%, 0)
Resultado: 12% para la fila 2. El último argumento suelto es el valor predeterminado, que se usa cuando no coincidió nada — un nivel Platinum devuelve 0 en vez de #N/D.
El límite está en el nombre: CAMBIAR compara valores, así que no puede expresar >=20000. Existe un truco conocido — =CAMBIAR(VERDADERO, E2>=20000, 12%, E2>=10000, 8%, VERDADERO, 0) — que funciona porque cada prueba se evalúa a VERDADERO o FALSO y gana la primera que coincide con VERDADERO. Es ingenioso, y si tienes SI.CONJUNTO deberías usar SI.CONJUNTO: expresa lo mismo sin el rodeo.
9) Cuándo la Lógica Debe Dejar de Ser una Fórmula
Las secciones 3 y 4 incrustan los cuatro tramos de descuento en cada celda de una columna. Funciona y es lo que hacen la mayoría de los libros, y tiene tres costes que solo aparecen más tarde: nadie puede ver la regla sin pinchar en la barra de fórmulas, cambiar un tramo obliga a editar todas las fórmulas que lo llevan dentro, y no queda registro en ninguna parte de cuáles eran los tramos el trimestre pasado.
🎯 Escenario: La misma escalera de descuentos, pero finanzas quiere cambiar el tramo de 10.000 a 12.000 el mes que viene sin tocar una sola fórmula.
Pon la regla en celdas. En J1:K5:
| Importe mínimo | Descuento |
|---|---|
| 0 | 0% |
| 5.000 | 5% |
| 10.000 | 8% |
| 20.000 | 12% |
=BUSCARX(E2, $J$2:$J$5, $K$2:$K$5, 0, -1)
Resultado: 8% para 12.400 — idéntico a la escalera. El -1 es el modo de coincidencia: exacta o el siguiente elemento más pequeño, que es precisamente lo que es un tramo. El equivalente antiguo es =BUSCARV(E2, $J$2:$K$5, 2, VERDADERO), cuyo VERDADERO significa lo mismo y que exige la columna de tramos ordenada de forma ascendente.
Ahora la regla son cuatro filas que cualquiera puede leer y editar, la fórmula ya no cambia nunca, y los tramos del trimestre pasado están a un comentario de celda de quedar documentados. El mismo movimiento vale para tarifas por nivel, zonas de envío, umbrales de aprobación, notas de corte — cualquier decisión que en realidad sea una tabla pequeña disfrazada de fórmula.
Dos costumbres relacionadas que merece la pena robar:
Ponle nombre a la marca. =SI(O(F2>10, E2>=25000), "Revisar", "OK") en una columna titulada Motivo de revisión resulta más útil como dos columnas —una que decide y otra que dice por qué— que como una única mega-fórmula anidada en cuatro niveles. Las columnas auxiliares no cuestan nada y se pueden ocultar.
Devuelve valores, no frases. Un SI que devuelve 8% se puede sumar, graficar y comparar. Un SI que devuelve "8% de descuento" solo se puede leer. Decide en números y dales formato de texto al final del todo, si es que hace falta.
10) Diez Formas en Que la Lógica Sale Mal
- Omitir
valor_si_falso— la palabraFALSOaterriza en una columna de texto. - Tramos probados en el orden equivocado — la condición más amplia primero atrapa todo lo que hay por debajo, en silencio.
SI.CONJUNTOsin peldañoVERDADERO—#N/Den cada fila que no coincide con nada.>donde querías>=— una fila, justo en el límite, mal para siempre.- Números guardados como texto — toda comparación contra un número se cumple, así que todas las filas califican.
Yalimentado con un rango — un soloFALSOpara la columna entera, y encima parece una respuesta.SI.ERRORenvolviendo la fórmula completa — esconde tu errata con la misma elegancia con que esconde los datos que faltan.- Confundir
""con vacío —ESBLANCOdiceFALSO,CONTAR.BLANCOno coincide conCONTARA, y nadie ve por qué. - Comparar con una fecha o una tasa incrustada —
=SI(E2>=10000,...)repetido 400 veces son 400 sitios que editar. - Anidar más allá de tres niveles — técnicamente legal, en la práctica una regla que nadie volverá a auditar.
Conclusión
Las funciones de este artículo no son difíciles. SI tiene tres argumentos y Y tiene una sola idea. Lo que convierte a las fórmulas lógicas en las que más probablemente estén mal en silencio es que una decisión equivocada devuelve un valor de aspecto perfectamente normal —sin error, sin color, sin queja— y luego sigue devolviéndolo todos los meses hasta que alguien cuadra una cifra a mano y encuentra el desfase.
Así que las costumbres valen más que la sintaxis. Saca la prueba fuera del SI y mira qué devuelve antes de fiarte. Comprueba tus tramos contra los valores que caen justo en el límite, no contra los del medio. Dale a SI.CONJUNTO su peldaño VERDADERO y a SI.ERROR la cosa más pequeña posible que atrapar. Y cuando una escalera llegue a tres peldaños, saca la regla de la fórmula y ponla en celdas donde un ser humano pueda leerla.
¿Quieres practicar? Los ejercicios de lógica condicional de la app están construidos exactamente sobre estas formas — una escalera de tramos con un valor límite entre los datos, una marca con O entre dos columnas, y uno en el que SI.ERROR está escondiendo algo que no debería.
