Sustituir condicionales anidados por BUSCARV en Excel
Todos hemos escrito esa fórmula: un SI dentro de otro SI dentro de otro, hasta que la celda es ilegible y nadie se atreve a tocarla tres meses después.
En este tutorial vemos la alternativa: aislar cada condición en su propia columna, convertirlas en un código de ceros y unos, y resolver el estado final con un BUSCARV contra una pequeña tabla de estados. Ganas dos cosas — la fórmula se lee de un vistazo, y la tabla te obliga a pensar todas las combinaciones posibles del árbol de decisiones en vez de descubrirlas por accidente.
La fórmula que nadie quiere heredar
Es probablemente el problema que más crece a medida que enriqueces una hoja: los condicionales anidados. Necesitas rellenar una columna de estado en función de varias columnas, y empiezas metiendo un SI dentro de otro SI dentro de otro, hasta que la celda es imposible de interpretar.
El caso de ejemplo es de manual: una lista de tareas con su fecha prevista, una duración estimada y la fecha en que se entregó o se prevé entregar. Y a partir de ahí, una fórmula larguísima: si la entrega es anterior a hoy, se abre otro condicional; si se entregó antes de lo previsto, entrega correcta; si fue después, entrega con retraso; si todavía no ha llegado la fecha, otra rama distinta. Cubres todas las opciones posibles y acabas con algo que funciona pero que no se puede leer.
La alternativa: aislar cada condición en su columna
En vez de meter toda la lógica en una celda, la repartimos. Cada condición se convierte en una columna independiente que solo responde a una pregunta, y devuelve verdadero o falso.
En el ejemplo trabajamos con tres:
- ¿la fecha de entrega es posterior a hoy?
- ¿la fecha de entrega —la real o la estimada— va con retraso respecto al plazo?
- ¿la línea pertenece al proyecto A, el que tiene prioridad más alta?
Tres condiciones dan ocho combinaciones posibles, que son todas las ramas de ese árbol de decisiones que antes estaba enterrado en la fórmula.
Paso clave: convertir las condiciones en un código
Aquí está el truco. A cada una de esas columnas le asignamos un 1 o un 0, y luego las concatenamos en una sola cadena.
Así, cada fila acaba con un código de tres cifras: 101, 011, 110. Cada uno significa algo muy concreto y muy legible — el primer dígito dice si ya hemos pasado la fecha de entrega, el segundo si va con retraso, el tercero si es del proyecto clave.
Lo bonito es que el código se calcula solo. Cambian las fechas, cambia el código, y con él el estado.
La tabla de estados
Con los códigos generados, montamos una pequeña tabla de apoyo: en una columna las ocho combinaciones posibles, y en la otra qué significa cada una.
Por ejemplo: una tarea a la que todavía no ha llegado la fecha, que no va tarde según la estimación y que no es del proyecto clave, está en plazo. Otra a la que tampoco ha llegado la fecha pero cuya estimación ya apunta a que llegará tarde, va con retraso. Y así con las ocho.
Esto tiene un efecto secundario que es la mitad del valor del método: te obliga a pensar qué situaciones se pueden dar en todo el árbol y a darle una respuesta explícita a cada una. En la fórmula anidada esas ramas también existían, pero las descubrías por accidente cuando algo salía mal.
El cierre: un BUSCARV y ya está
Solo queda resolver el estado. Un BUSCARV que busca el código concatenado en la tabla de estados y devuelve el texto de la segunda columna, con coincidencia exacta —el último argumento en falso.
El resultado es idéntico al de la fórmula monstruosa. La diferencia es todo lo demás: si mañana hay que cambiar qué significa 101, se edita una celda de la tabla, no se reescribe una fórmula de seis líneas. Y si aparece un caso nuevo, se añade una condición más y una fila más.
La lección de fondo
Hay una especie de orgullo en hacer fórmulas larguísimas y complicadas, como si eso marcase el nivel de tus conocimientos de Excel. Es justo lo contrario.
Cuanto más separas en columnas, cuanto más organizas para que se pueda leer —no hoy, que estás caliente con el fichero, sino de aquí a tres meses, o cuando se lo pases a otra persona— más conocimiento estás aplicando de verdad. Porque ahí ya no se trata solo de conocer la función: se trata de entender por dónde circula la información en tu hoja.
Más contenido de Excel en InflueXcel
- Sustituir SUMAR.SI.CONJUNTO lento por MMULT y BYCOL en análisis de inventario CasoUn miembro desde Ecuador tiene un modelo de inventario con SUMAR.SI.CONJUNTO dentro de una fórmula LET con ELEGIRCOLS y FILTRAR. El problema
- Del VBA a una sola fórmula: calcular el RFC mexicano con LET, MAP y expresiones regulares CasoHector llega al grupo con un problema que no se ve todos los días: tiene resuelto el cálculo del RFC mexicano, pero lo tiene en VBA, y quier
- Separar artículos concatenados en filas: 4 enfoques (fórmulas, Power Query y Python) CasoCaso interesante con cuatro enfoques muy distintos para resolver un mismo problema: una tabla tiene una columna de artículos concatenados co
- Evitar 1/1/1900 al apilar tablas con fechas vacías usando APILARV CasoFernando tiene varias tablas auxiliares que combina con APILARV en una tabla resumen. El problema: cuando un campo de fecha está vacío, apar
- Repetir un rango N veces según marca con MAP y CONTAR.SI CasoUn usuario necesita repetir un listado de locales (D2:D10) un número variable de veces para cada marca de la columna B. El número de repetic
- Funciones de texto y limpieza de datos en Excel TutorialLos datos que llegan de fuera nunca vienen limpios: espacios de más, acentos que rompen los cruces, nombres y apellidos en la misma celda, c
- Acumular el saldo en PIVOTARPOR: una función de agregación distinta por columna CasoNuevo caso que empieza con una suposicion razonable y acaba en una contraprueba del propio autor. Juan trae un libro mayor en bruto y quiere
- CONTAR.SI no acepta ELEGIRCOLS: por qué las funciones .SI exigen una referencia y no una matriz CasoHay errores de Excel que te mandan a buscar en la dirección equivocada, y este es de manual. Joan Recasens llega al grupo con una fórmula qu
- Distribuir gastos por categoría con SI.CONJUNTO matricial y reparto proporcional CasoUn miembro de la comunidad tiene una tabla de gastos donde cada línea tiene un concepto (categoría como "SGA", "Overhead", "COGS") y un impo
- Convertir IF con referencia a celda anterior en fórmula array con SCAN CasoAnita plantea un reto técnico interesante: tiene la fórmula =SI(B4=B3; D3+1; 1) que incrementa un contador cuando la celda actual coincide c