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éricas
  • PIVOTARPOR — misma familia; con el campo de columnas vacío se comporta como un agrupamiento simple
  • MATRIZATEXTO — convierte una matriz en un texto; sirve como función de agregación para consolidar textos
  • APILARH — combina varios campos de agrupación en una sola matriz
  • ELEGIRCOLS — selecciona columnas por posición y, de paso, las reordena
  • LET — 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