Resumen mensual ordenado cronológicamente con una sola fórmula AGRUPARPOR
Desde Lima, un miembro de la comunidad plantea un problema muy habitual: tiene datos con fechas y valores, y quiere hacer un resumen por meses ordenado de enero a diciembre, todo con una sola fórmula. Lo consigue en dos pasos pero busca la solución en uno. Comparte su fichero con los datos de ejemplo.
El problema de fondo es que AGRUPARPOR ordena el resultado alfabéticamente por defecto. Así que los meses aparecen como Abril, Agosto, Diciembre... en lugar de Enero, Febrero, Marzo. La comunidad aporta cuatro enfoques distintos.
Nacho usa APILARH con MES como columna de orden:
``
=EXCLUIR(
AGRUPARPOR(
APILARH(MES(B3:B29); TEXTO(B3:B29; "MMMM"));
C3:C29;
SUMA
);; 1
)
`
La idea clave: si necesitas que AGRUPARPOR ordene de una forma concreta, dale una columna extra que fuerce ese orden y luego elimínala con EXCLUIR.
NedNavarrete propone una versión más compacta con TEXTO y constante matricial:
`
=EXCLUIR(
AGRUPARPOR(
TEXTO(B3:B29; {"mm";"mmmm"});
C3:C29;
SUMA
);; 1
)
`
Al usar "mm" (01, 02, 03...) el orden alfabético coincide con el cronológico. Elegante y sin necesidad de APILARH ni MES.
Gerson añade una fila de total usando LET y SI:
`
=LET(
a; EXCLUIR(
AGRUPARPOR(
TEXTO(B3:B29; {"m";"mmmm"});
C3:C29;
SUMA
);; 1
);
SI(a = ""; "Total:"; a)
)
`
Aprovecha que AGRUPARPOR puede generar una fila vacía al final para insertar ahí la etiqueta "Total:".
Un cuarto enfoque radicalmente distinto: primero AGRUPARPOR genera el resultado con orden alfabético, y después SORTBY lo reordena:
`
=SORTBY(
ANCHORARRAY(J3);
VALUE(J3:J15 & "1");
1
)
`
El truco: VALUE("Enero1") devuelve el número de serie de la fecha 1 de enero, así que los meses quedan automáticamente en orden cronológico. ANCHORARRAY referencia el resultado dinámico de la fórmula AGRUPARPOR` en J3.
Cuatro caminos al mismo destino. El fichero adjunto incluye las soluciones 1, 2 y 4 implementadas para poder comparar.
El problema: AGRUPARPOR ordena alfabéticamente y los meses salen mal
Desde Lima, un miembro de la comunidad plantea algo que parece trivial: tiene una tabla con fechas e importes y quiere un resumen mensual, de enero a diciembre, con una sola fórmula. Lo consigue en dos pasos, pero busca hacerlo en uno.
El obstáculo no es agrupar, eso AGRUPARPOR lo hace de sobra. El obstáculo es el orden: AGRUPARPOR ordena el resultado alfabéticamente por la columna de agrupación. Y como el nombre del mes es texto, el resumen sale así: Abril, Agosto, Diciembre, Enero, Febrero... Correcto en los números, ilegible para cualquiera que lo mire.
La comunidad aportó cuatro caminos distintos, y merece la pena verlos todos porque cada uno enseña una técnica reutilizable.
Enfoque 1: añadir una columna que fuerce el orden
Nacho parte de la idea más general: si AGRUPARPOR ordena por la primera columna, dale una primera columna que ordene como tú quieres, y luego quítala.
=EXCLUIR(
AGRUPARPOR(
APILARH(MES(B3:B29); TEXTO(B3:B29; "MMMM"));
C3:C29;
SUMA
);; 1
)APILARH monta una columna de agrupación de dos campos: el número de mes y su nombre. Como el número manda en la ordenación, enero va primero. Después EXCLUIR elimina esa columna de servicio y deja solo el nombre del mes y el total.
Esta es la idea que conviene guardar: cuando una función ordena por algo que no te sirve, añade una clave de orden auxiliar y elimínala al final. Funciona muchísimo más allá de los meses.
Enfoque 2: que el texto ordene solo
NedNavarrete se da cuenta de que puede ahorrarse el APILARH y el MES con un truco de formato:
=EXCLUIR(
AGRUPARPOR(
TEXTO(B3:B29; {"mm";"mmmm"});
C3:C29;
SUMA
);; 1
)TEXTO acepta una matriz de formatos, así que devuelve dos columnas de una tacada: el mes en dos dígitos (01, 02, 03...) y el nombre completo. Y ahí está la gracia: con ceros a la izquierda, el orden alfabético coincide con el cronológico. "01" va antes que "02" tanto para una persona como para el ordenador.
Más corto, con menos funciones y sin perder nada. Es la versión que yo dejaría en producción.
Enfoque 3: aprovechar la fila vacía para el total
Gerson añade un detalle práctico. AGRUPARPOR puede generar una fila en blanco al final, y en vez de estorbar se puede aprovechar:
=LET(
a; EXCLUIR(
AGRUPARPOR(
TEXTO(B3:B29; {"m";"mmmm"});
C3:C29;
SUMA
);; 1
);
SI(a = ""; "Total:"; a)
)Guarda el resultado en la variable a con LET y luego sustituye lo que esté vacío por la etiqueta "Total:". Es un buen ejemplo de por qué LET merece la pena: sin él tendrías que repetir todo el bloque de AGRUPARPOR dos veces.
Enfoque 4: agrupar primero y reordenar después
El cuarto camino invierte el planteamiento. En lugar de pelearse con el orden dentro de AGRUPARPOR, deja que salga alfabético y lo reordena por fuera:
=ORDENARPOR(
J3#;
VALOR(J3:J15 & "1");
1
)El truco está en la clave de ordenación. VALOR("Enero1") interpreta ese texto como una fecha, el 1 de enero, y devuelve su número de serie. Al hacerlo con cada mes, obtienes automáticamente 12 números en orden cronológico. Excel ordena por esos números y listo.
El J3# con la almohadilla es el operador de derrame: apunta al resultado dinámico completo de la fórmula AGRUPARPOR que vive en J3, sin tener que saber cuántas filas ocupa.
Funciones clave
AGRUPARPOR— agrupa y agrega en una sola fórmula. Ordena por la columna de agrupación, y eso es exactamente lo que hay que domar aquí.TEXTO— con una matriz de formatos devuelve varias columnas a la vez. La clave del enfoque 2.EXCLUIR— elimina filas o columnas del resultado. Perfecto para quitar la columna de orden auxiliar.LET— guarda un resultado en una variable para reutilizarlo sin recalcularlo.ORDENARPOR— ordena una matriz según otra matriz de claves, que pueden ser calculadas.- El operador de derrame (almohadilla) — referencia el resultado completo de una fórmula dinámica sin fijar su tamaño.
Conclusión
Cuatro soluciones al mismo problema, y ninguna es la "buena" en abstracto. Si buscas la más corta, la de los formatos "mm" y "mmmm". Si necesitas una fila de total, la de LET. Si ya tienes el resumen calculado en otro sitio y solo quieres reordenarlo, la de ORDENARPOR.
Lo que sí se lleva uno para siempre es el patrón de fondo: el orden de un resultado agrupado se controla con la clave por la que se agrupa. Si esa clave no ordena como quieres, fabrica una que sí lo haga.
El fichero adjunto trae implementadas las soluciones 1, 2 y 4 para poder compararlas de primera mano.
Más casos con estas funciones
Más contenido de Excel en InflueXcel
- Precio más reciente por artículo: REDUCE, AGRUPARPOR y números complejos CasoNuevo reto interesante planteado por Miki: dada una tabla con artículos y sus precios históricos por año (múltiples filas por artículo), obt
- Error #CALC con MAP y AGRUPARPOR: solución con REDUCE+APILARV CasoNuevo reto de Excel resuelto por la comunidad: un usuario necesita aplicar AGRUPARPOR de forma iterativa sobre un rango de códigos de cuenta
- Agrupar y sumar columnas específicas con AGRUPARPOR y ELEGIRCOLS CasoUn miembro de la comunidad necesita agrupar datos de una hoja de seguimiento y sumar solo determinadas columnas, sin incluir todas las del r
- Readmisión de pacientes en 48h: Power Query, LAMBDA/MAP y AGRUPARPOR CasoAndrés Rojas plantea un reto real de datos clínicos: a partir de una tabla con más de un millón de registros de urgencias (IdPaciente, Fecha
- 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á
- 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
- Regularización trimestral con AGRUPARPOR y ARCHIVOMAKEARRAY: del caos a una fórmula CasoCaso fresquito de la comunidad. Juan plantea un problema contable: tiene una tabla de movimientos (Nombre, Cuenta, Importe, Fecha) y necesit
- Formato dinámico AGRUPARPOR PIVOTARPOR TutorialAplicar formato condicional a las matrices calculadas es fundamental para conseguir que su legibilidad sea óptima
- 12 TRUCOS POWERQUERY DESVELADOS TutorialImperdible sesión junto a Rafael González, John Vergara, Ramón Barrull y Sara Lozano
- Consolidar múltiples archivos Excel con Power Query desde carpeta CasoUn miembro necesitaba consolidar datos de múltiples archivos Excel almacenados en una carpeta. El reto adicional: cada archivo contenía vari