Agrupar textos por categoría con AGRUPARPOR y MATRIZATEXTO
Juan tiene un "diario" en Excel donde apunta anotaciones con una categoría asociada, y quiere consolidar todas las anotaciones de la misma categoría en una sola celda. Las funciones de agrupación (AGRUPARPOR, PIVOTARPOR) están pensadas para números, no para texto — pero con MATRIZATEXTO como función de agregación, se puede.
Con PIVOTARPOR + MATRIZATEXTO (Hugo): usa PIVOTARPOR sin campo de columnas (solo filas) y MATRIZATEXTO como función de agregación para concatenar los textos:
``
=ELEGIRCOLS(PIVOTARPOR(D$6:D$8;; E$6:E$8; MATRIZATEXTO;; 0); 2)
`
Con AGRUPARPOR + APILARH (Leo): más limpio. Combina la categoría y un campo auxiliar con APILARH para tener dos columnas de agrupación, y aplica MATRIZATEXTO para unir los textos:
`
=AGRUPARPOR(APILARH(D6:D8; C6:C8); E6:E8; MATRIZATEXTO;; 0)
`
Versión dinámica con LET y alias de función (Leo): asigna ELEGIRCOLS a una variable C dentro de LET para hacer la fórmula más compacta y reutilizable:
`
=LET(
r; C6:E8;
C; ELEGIRCOLS;
AGRUPARPOR(C(r; 2; 1); C(r; 3); MATRIZATEXTO;; 0)
)
`
Juan Pablo pregunta por la técnica de almacenar funciones en variables de LET`, y Leo explica que funciona aunque IntelliSense no muestre los parámetros — hay que conocer los argumentos de memoria.
AGRUPARPOR y PIVOTARPOR llegaron a Excel pensadas para números: suma, promedio, cuenta. Pero Juan quería consolidar textos — todas las anotaciones de su diario agrupadas por categoría en una sola celda — y la comunidad demostró que sí se puede, con la función de agregación adecuada.
El problema
Juan lleva un diario en Excel: una columna con la anotación, otra con la categoría asociada. Lo que necesita es un resumen donde cada categoría aparezca una sola vez, con todas sus anotaciones concatenadas.
El obstáculo mental es asumir que las funciones de agrupación solo agregan números. En realidad el argumento de función de agregación admite cualquier función que colapse una matriz en un valor, y MATRIZATEXTO hace exactamente eso con texto.
Enfoque 1: PIVOTARPOR con MATRIZATEXTO
Hugo resuelve con PIVOTARPOR dejando el campo de columnas vacío, de modo que solo agrupe por filas:
=ELEGIRCOLS(PIVOTARPOR(D$6:D$8; ; E$6:E$8; MATRIZATEXTO; ; 0); 2)El segundo argumento va vacío (no hay campo de columnas), el tercero son los valores a agregar y el cuarto es la función: MATRIZATEXTO en lugar de SUMA. El ELEGIRCOLS(...; 2) final se queda solo con la columna de textos concatenados.
Enfoque 2: AGRUPARPOR con APILARH
Leo propone una versión más limpia con AGRUPARPOR, apilando dos campos de agrupación con APILARH:
=AGRUPARPOR(APILARH(D6:D8; C6:C8); E6:E8; MATRIZATEXTO; ; 0)APILARH(D6:D8; C6:C8) construye una matriz de dos columnas de agrupación, así que el resultado desglosa por ambos criterios. El 0 final del argumento de encabezados evita que aparezca una cabecera generada.
Es la fórmula más directa de las tres: sin ELEGIRCOLS para recortar, porque AGRUPARPOR ya devuelve exactamente las columnas que interesan.
Enfoque 3: guardar una función en una variable de LET
La tercera versión de Leo introduce una técnica poco conocida y muy útil:
=LET(
r; C6:E8;
C; ELEGIRCOLS;
AGRUPARPOR(C(r; 2; 1); C(r; 3); MATRIZATEXTO; ; 0)
)Fíjate en la segunda declaración: C; ELEGIRCOLS. No se está guardando el resultado de la función, sino la función misma. A partir de ahí, C(r; 2; 1) es una llamada a ELEGIRCOLS con nombre abreviado.
Las ventajas son claras cuando una función se repite muchas veces en la misma fórmula: menos ruido visual, un solo sitio donde cambiarla, y una fórmula que trabaja sobre un único rango r en lugar de repetir referencias.
Juan Pablo preguntó precisamente por esta técnica, y Leo advirtió del inconveniente: IntelliSense no muestra los parámetros de la función abreviada mientras escribes. Tienes que conocer de memoria los argumentos de ELEGIRCOLS. Es el precio de la compacidad.
Este patrón funciona porque en Excel moderno una función es un valor más: puedes guardarla en una variable, pasarla como argumento a BYCOL o a AGRUPARPOR, y llamarla después. Es la misma idea que permite escribir BYCOL(rango; MAX) sin envolver MAX en una LAMBDA.
Detalle sobre el orden de agrupación
Fíjate en C(r; 2; 1) del último ejemplo: pide las columnas 2 y 1 del rango, en ese orden. No es un descuido. El orden en que apiles los campos de agrupación determina la jerarquía del resumen, igual que el orden de los campos de fila en una tabla dinámica clásica.
Funciones clave
AGRUPARPOR— agrupa y agrega; admite cualquier función de agregación, no solo numéricasPIVOTARPOR— misma familia; con el campo de columnas vacío se comporta como un agrupamiento simpleMATRIZATEXTO— convierte una matriz en un texto; sirve como función de agregación para consolidar textosAPILARH— combina varios campos de agrupación en una sola matrizELEGIRCOLS— selecciona columnas por posición y, de paso, las reordenaLET— puede almacenar funciones, no solo valores
Conclusión
Si has descartado AGRUPARPOR para tus datos porque son texto, vuelve a mirarlo: el limitante nunca fue el tipo de dato, sino la función de agregación que le pasabas. Con MATRIZATEXTO el abanico se abre a diarios, listados de incidencias, notas por proyecto o cualquier consolidación de texto por categoría.
Este caso salió de una necesidad cotidiana planteada en el grupo de InflueXcel, y acabó enseñando de paso que las funciones se pueden guardar en variables. Así es como funciona la comunidad.
Más casos con estas funciones
Más contenido de Excel en InflueXcel
- 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
- Comentarios persistentes junto a AGRUPARPOR/PIVOTARPOR CasoJuan plantea un problema muy habitual para quienes trabajan con PIVOTARPOR o AGRUPARPOR: añadir comentarios o anotaciones en columnas auxili
- Formato dinámico AGRUPARPOR PIVOTARPOR TutorialAplicar formato condicional a las matrices calculadas es fundamental para conseguir que su legibilidad sea óptima
- 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
- Ordenar meses cronológicamente en PIVOTARPOR CasoProblema clásico con PIVOTARPOR: cuando los meses vienen como texto ("enero", "febrero"...), las columnas se ordenan alfabéticamente en luga
- 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
- 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
- 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á
- Crear una tabla automáticamente cuando no sabes cuántas filas vienen (Office Scripts) CasoUn miembro de la comunidad llegó con un reto poco habitual: necesitaba un script para Excel en la web que convirtiera un rango en tabla sin
- Contar participantes por mes en cursos con rangos de fechas CasoInteresante reto planteado por Jaime: tiene una lista de cursos, cada uno con fecha de inicio, fecha de fin y un número de participantes. Ne