Reto de agrupación y pivotado: AGRUPARPOR vs ARCHIVOMAKEARRAY vs MAP

Leandro trae un reto de internet al grupo: a partir de una tabla con claves repetidas y valores, generar una tabla pivotada donde cada clave aparezca una vez y los valores se concatenen. La comunidad responde con un festival de enfoques.

Con AGRUPARPOR directo (Leo): la solución más limpia. Agrupa por clave y aplica UNIRCADENAS como función de agregación:

``
=AGRUPARPOR(
APILARV(UNICOS(claves); claves);
valores;
LAMBDA(x; UNIRCADENAS(", ";; x));;
0
)
`

Con AJUSTARFILAS + COINCIDIRX + ARCHIVOMAKEARRAY (John): enfoque completamente distinto que construye la tabla resultado celda a celda con ARCHIVOMAKEARRAY:

`
=LET(
u; UNICOS(claves);
n; MAX(CONTAR.SI(claves; u));
ARCHIVOMAKEARRAY(FILAS(u); n; LAMBDA(i; j;
SI.ND(INDICE(
FILTRAR(valores; claves = INDICE(u; i));
j
); "")
))
)
`

Con MAP + SECUENCIA + UNIRCADENAS (John): variante que genera cada fila con MAP, extrayendo los valores correspondientes a cada clave:

`
=MAP(UNICOS(claves); LAMBDA(x;
UNIRCADENAS(", ";; FILTRAR(valores; claves = x))
))
`

Con PIVOTARPOR + BUSCARX (Leo): usando PIVOTARPOR como tabla pivote y BUSCARX para rellenar las posiciones:

`
=PIVOTARPOR(claves;; valores; LAMBDA(x; UNIRCADENAS(", ";; x));; 0)
`

Cada solución tiene sus ventajas: AGRUPARPOR es la más directa, ARCHIVOMAKEARRAY ofrece control total sobre la forma del resultado, y MAP` es la más legible.

El reto: pivotar concatenando valores

Leandro trajo al grupo un reto encontrado por internet: partiendo de una tabla con claves repetidas y sus valores, generar una tabla pivotada donde cada clave aparezca una sola vez y todos sus valores queden concatenados en la misma fila.

Es el tipo de problema que en una tabla dinámica clásica no se resuelve (las dinámicas suman y cuentan, no concatenan texto), así que hay que bajar a fórmulas. La comunidad respondió con cuatro enfoques que van de lo más directo a lo más artesanal.

Enfoque 1: AGRUPARPOR directo

Leo va al grano con la solución más limpia:

=AGRUPARPOR(
    APILARV(UNICOS(claves); claves);
    valores;
    LAMBDA(x; UNIRCADENAS(", ";; x));;
    0
)

La gracia está en que AGRUPARPOR acepta cualquier función de agregación en forma de LAMBDA, no solo SUMA o PROMEDIO. Pasándole UNIRCADENAS agrupa por clave y pega los valores separados por comas. Una sola función hace todo el trabajo.

Enfoque 2: construir la tabla celda a celda

John plantea algo radicalmente distinto: en vez de agrupar, fabricar la matriz resultado desde cero.

=LET(
    u; UNICOS(claves);
    n; MAX(CONTAR.SI(claves; u));
    ARCHIVOMAKEARRAY(FILAS(u); n; LAMBDA(i; j;
        SI.ND(INDICE(
            FILTRAR(valores; claves = INDICE(u; i));
            j
        ); "")
    ))
)

Primero calcula cuántas filas hará falta (las claves únicas) y cuántas columnas (el máximo de repeticiones de una clave). Después ARCHIVOMAKEARRAY va rellenando cada celda: para la fila i y la columna j, filtra los valores de esa clave y coge el j-ésimo. El SI.ND tapa los huecos cuando una clave tiene menos valores que otra.

Es más largo, pero te da control total sobre la forma del resultado: aquí los valores quedan en columnas separadas, no concatenados.

Enfoque 3: MAP fila a fila

John también propone una variante mucho más legible:

=MAP(UNICOS(claves); LAMBDA(x;
    UNIRCADENAS(", ";; FILTRAR(valores; claves = x))
))

Se lee casi como una frase: por cada clave única, filtra sus valores y únelos con comas. Si tuvieras que explicarle la fórmula a alguien, esta es la que entendería a la primera.

Enfoque 4: PIVOTARPOR

Leo cierra con la versión más compacta de todas:

=PIVOTARPOR(claves;; valores; LAMBDA(x; UNIRCADENAS(", ";; x));; 0)

Mismo principio que AGRUPARPOR, pero usando la función pensada específicamente para pivotar.

Funciones clave

  • AGRUPARPOR: agrupa filas por una clave y aplica una función de agregación, que puede ser una LAMBDA propia.
  • PIVOTARPOR: la hermana de AGRUPARPOR orientada a tablas cruzadas.
  • UNIRCADENAS: concatena una matriz de textos con un separador. La pieza que las dinámicas clásicas no tienen.
  • ARCHIVOMAKEARRAY: construye una matriz de las dimensiones que le digas, calculando cada celda con una LAMBDA que recibe fila y columna.
  • MAP: recorre un rango aplicando una LAMBDA a cada elemento.
  • UNICOS y FILTRAR: la base de casi todo lo anterior.

Cuál usar

Depende de qué quieras como resultado. Si buscas los valores concatenados en una celda, AGRUPARPOR o PIVOTARPOR son imbatibles en longitud. Si los quieres repartidos en columnas, ARCHIVOMAKEARRAY es el único de los cuatro que lo hace. Y si vas a tener que mantener la fórmula dentro de seis meses, el MAP es el que agradecerás.

Conclusión

Cuatro caminos para el mismo destino, cada uno con su punto fuerte: AGRUPARPOR gana en concisión, ARCHIVOMAKEARRAY en control y MAP en legibilidad. Retos así, con varios miembros compitiendo por la solución más elegante, salen cada semana en la comunidad de Influexcel.

Más casos con estas funciones

Más contenido de Excel en InflueXcel