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.
01Qué 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
02La 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".
Pruébalo en la cuadrículaSeis 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.
03SI 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.
Pruébalo en la cuadrículaUn 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.
04SI.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.
05Y, 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.
Pruébalo en la cuadrícula=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.
06Aritmé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.
Pruébalo en la cuadrícula=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.
07SI.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.
Pruébalo en la cuadrícula=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.
08CAMBIAR: 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.
09Cuá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.
Pruébalo en la cuadrículaPon 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.
10Diez 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.