Grado de avance por proyecto: despivotar y volver a pivotar por fecha
Nuevo caso de la comunidad con mucho jugo para los que trabajan con reporting de proyectos.
Juan plantea un problema habitual en oficinas técnicas y consultoras: una tabla con cabeceras combinadas donde cada fila es un proyecto y cada columna representa una fecha con dos métricas (grado de avance y coste). El objetivo es reorganizar esa tabla para obtener, por cada proyecto y fecha, una vista limpia que permita calcular el grado de avance en el tiempo.
La solución de Miki ataca el problema en dos pasos. Primero despivota la tabla original con una combinación de FILTRAR, SCAN y APILARH para convertir el formato ancho en largo (una fila por proyecto/fecha/métrica). Después vuelve a pivotar por fecha y proyecto usando PIVOTARPOR, devolviendo la tabla reordenada con las métricas separadas. El resultado es una vista dinámica que se actualiza automáticamente cuando cambian los datos originales.
Gerson aporta una alternativa construida sobre el archivo de Miki, apoyándose en LAMBDA para encapsular la transformación como función reutilizable. Es especialmente útil si el mismo patrón (despivotar + pivotar por fecha) se quiere aplicar a varias tablas similares dentro del mismo libro.
Funciones destacadas: LET, LAMBDA, FILTRAR, SCAN, APILARH, PIVOTARPOR, ENCOL, SI.CONJUNTO, ELEGIRCOLS, EXPANDIR, SI.ND.
El caso incluye el archivo original con el planteamiento de Juan y el archivo con la propuesta de Miki (que también sirvió de base para la alternativa de Gerson).
El problema: una tabla ancha con cabeceras combinadas
En reporting de proyectos aparece una y otra vez la misma estructura incómoda: una tabla donde cada fila es un proyecto y cada columna representa una fecha con dos métricas debajo (grado de avance y coste), todo bajo cabeceras combinadas. Es cómoda de rellenar, pero imposible de explotar tal cual.
Juan planteó justo esto en la comunidad: necesitaba reorganizar esa tabla para obtener, por cada proyecto y fecha, una vista limpia que permitiera seguir el grado de avance en el tiempo.
La solución de Miki: despivotar y volver a pivotar
Miki atacó el problema en dos pasos, que son la clave para entender este tipo de transformaciones.
Paso 1 — despivotar. Convierte el formato ancho en formato largo, generando una fila por cada combinación de proyecto, fecha y métrica. Lo consigue combinando FILTRAR, SCAN y APILARH. El resultado intermedio es una tabla estrecha y uniforme, mucho más fácil de manipular.
Paso 2 — volver a pivotar. Con los datos ya en formato largo, usa PIVOTARPOR para reorganizarlos por fecha y proyecto, devolviendo las métricas separadas en su sitio. Al ser fórmulas, el resultado es dinámico: si cambian los datos originales, la vista se recalcula sola.
La secuencia despivotar y volver a pivotar es un patrón potentísimo: en vez de pelear con la tabla ancha directamente, la aplanas primero y la reconstruyes con la forma que necesitas.
La alternativa de Gerson: encapsular en una LAMBDA
Partiendo del archivo de Miki, Gerson propuso envolver la transformación en una función LAMBDA reutilizable. La ventaja es evidente cuando el mismo patrón —despivotar más pivotar por fecha— se repite en varias tablas del libro: defines la lógica una vez, le das nombre en el Administrador de nombres y la aplicas donde haga falta, sin copiar y pegar fórmulas kilométricas.
Es el paso natural cuando una transformación deja de ser puntual y se convierte en algo recurrente en tu modelo.
Funciones clave
FILTRAR: descarta filas o columnas que no cumplen una condición, base del despivotado.SCAN: recorre los datos acumulando un estado, útil para arrastrar cabeceras o índices.APILARHyAPILARV: ensamblan bloques de datos en horizontal y en vertical.PIVOTARPOR: agrupa y resume por filas y columnas, el reverso del despivotado.LAMBDA: convierte la transformación completa en una función con nombre, reutilizable en todo el libro.- Apoyos habituales:
LET,ENCOL,SI.CONJUNTO,ELEGIRCOLS,EXPANDIRySI.NDpara afinar el resultado.
Por qué merece la pena hacerlo con fórmulas
Podrías resolver esto con Power Query o con tablas dinámicas, y son opciones válidas. Pero la vía de fórmulas dinámicas tiene una ventaja concreta en reporting: se actualiza al instante cuando cambian los datos, sin refrescar consultas ni tablas. Para un panel de seguimiento de proyectos que se consulta a diario, esa inmediatez marca la diferencia.
Conclusión
Cuando te encuentres una tabla ancha con cabeceras combinadas que no hay por dónde coger, acuérdate del patrón: despivota primero, pivota después. Miki lo resolvió con FILTRAR, SCAN, APILARH y PIVOTARPOR, y Gerson lo dejó reutilizable con LAMBDA. Dos formas de llegar al mismo sitio, y un recordatorio de que en Excel 365 casi cualquier reestructuración de datos cabe en una fórmula. Retos de reporting como este se cuecen cada semana en la comunidad de InflueXcel.
Más casos con estas funciones
Más contenido de Excel en InflueXcel
- Filtro multicriteria dinámico con LET, FILTRAR y LAMBDA CasoHector comparte con la comunidad una fórmula avanzada para filtrar una tabla de productos/servicios por múltiples criterios opcionales (clav
- Reestructurar datos apilados con LAMBDA y PIVOTARPOR CasoUn miembro de la comunidad comparte un archivo de revisión de Seguridad Social con una tabla amplia (34 columnas x 1540 filas) en formato "a
- Funciones personalizadas en Excel: LET, LAMBDA y recursividad TutorialCómo pasar de una fórmula escrita a mano a una función propia que puedes llamar por su nombre en cualquier libro. Los tres vídeos de esta pá
- Comparar elemento actual con el anterior: limitaciones de SCAN y solución elegante CasoUn miembro de la comunidad intenta usar SCAN con una "matriz coja" (dos columnas apiladas horizontalmente) para comparar cada elemento con e
- Estructurar correctamente LAMBDA con LET y parámetros opcionales CasoNuevo reto de Excel resuelto por la comunidad: un miembro está creando una función LAMBDA personalizada para calcular potencia de bombeo (fó
- Filtrar por fecha minima y maxima en PIVOTARPOR CasoMiki lanza una duda interesante sobre PIVOTARPOR: tiene una tabla con cierres mensuales (desde diciembre 2024 hasta mayo 2025) y quiere qued
- 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
- Filtrar una tabla por una lista de valores: una LAMBDA propia y su inversa TutorialTe pasan una lista de 30 números de albarán y hay que sacar esas filas de una tabla de miles. Con el autofiltro es marcar casillas una a una
- FILTRAR con ELEGIR y BUSCARX para consultas cruzadas entre tablas CasoInteresante problema planteado por Hector sobre cómo construir una consulta dinámica que combine columnas de una tabla con datos cruzados de
- Diagrama de GANTT con Ruta Crítica (CPM) 1/4 TutorialCalcula la ruta crítica de un proceso para poder graficar la información automáticamente