Comentarios persistentes junto a AGRUPARPOR/PIVOTARPOR

Juan plantea un problema muy habitual para quienes trabajan con PIVOTARPOR o AGRUPARPOR: añadir comentarios o anotaciones en columnas auxiliares junto al resultado dinámico. Cada vez que la fórmula se recalcula (porque se añaden nuevos datos), las filas cambian de posición y los comentarios se desajustan completamente.

La clave está en separar los comentarios de la hoja de resumen. En vez de escribir directamente junto al resultado dinámico, se mantiene una tabla auxiliar Comentarios con dos columnas: la clave de agrupación (ej: factura) y el texto del comentario. Así, por muchas veces que se recalcule el resumen, los comentarios se cruzan por clave y siempre aparecen en su sitio.

La fórmula combina AGRUPARPOR con MAP y UNIRCADENAS para traer los comentarios asociados a cada fila del resumen:

``
=LET(
_d; AGRUPARPOR(
Facturas[FACTURA];
Facturas[IMPORTE];
SUMA;
3
);
_c; MAP(
TOMAR(_d; ; 1);
LAMBDA(x;
UNIRCADENAS(
", ";
;
FILTRAR(
Comentarios[COMENTARIO];
Comentarios[FACTURA] = x;
""
)
)
)
);
APILARH(_d; _c)
)
`

AGRUPARPOR genera el resumen agrupado (facturas con importes sumados), TOMAR(_d; ; 1) extrae la primera columna (las claves), y MAP recorre cada clave aplicando FILTRAR + UNIRCADENAS para concatenar todos los comentarios asociados. APILARH une ambas partes en una sola salida.

El archivo adjunto incluye tres hojas: Datos (tabla de facturas con importes), Comentarios (tabla auxiliar factura-comentario) y Resumen (la fórmula en acción). Además incluye una macro VBA AñadirComentario` que permite añadir comentarios desde la propia hoja de resumen con un InputBox, sin necesidad de cambiar de hoja manualmente.

El problema: los comentarios se desordenan al recalcular

Si trabajas con AGRUPARPOR o PIVOTARPOR te habrás topado con esto. Montas un resumen dinámico precioso, se derrama solo, y entonces quieres añadir una columna al lado con anotaciones: "pendiente de revisar", "reclamado el día 12", "hablar con el cliente".

Escribes los comentarios en la columna de al lado y todo va bien... hasta que entran datos nuevos. La fórmula recalcula, aparecen filas, se reordenan las existentes, y tus comentarios se quedan donde estaban. Ahora la anotación de la factura 1004 está pegada a la 1017. El resumen sigue siendo correcto; los comentarios ya no.

Juan lo planteó en el grupo y la respuesta de la comunidad no fue una fórmula más lista, sino un cambio de planteamiento.

La solución: no escribas los comentarios en la hoja de resumen

La clave es separar los comentarios del resultado dinámico. En vez de teclear al lado de la matriz derramada, se mantiene una tabla auxiliar independiente, llamémosla Comentarios, con dos columnas:

  • La clave de agrupación (en este caso, el número de factura)
  • El texto del comentario

Con eso, el resumen deja de ser el sitio donde vive el dato y pasa a ser solo una vista. Por muchas veces que recalcule, los comentarios se cruzan por clave, no por posición, y siempre aparecen donde toca.

Es la misma lógica que aplicarías en una base de datos: el comentario pertenece a la factura, no a la fila número 7 de un informe.

La fórmula: AGRUPARPOR + MAP + UNIRCADENAS

=LET(
    _d; AGRUPARPOR(
        Facturas[FACTURA];
        Facturas[IMPORTE];
        SUMA;
        3
    );
    _c; MAP(
        TOMAR(_d; ; 1);
        LAMBDA(x;
            UNIRCADENAS(
                ", ";
                ;
                FILTRAR(
                    Comentarios[COMENTARIO];
                    Comentarios[FACTURA] = x;
                    ""
                )
            )
        )
    );
    APILARH(_d; _c)
)

Vamos parte por parte, que cada pieza tiene su motivo.

AGRUPARPOR genera el resumen. Agrupa por factura y suma importes. El 3 del cuarto argumento controla las cabeceras: en este caso indica que los datos traen cabecera y que se quiere mostrar en el resultado.

TOMAR(_d; ; 1) extrae la columna de claves. Al dejar vacío el argumento de filas y pasar 1 en el de columnas, TOMAR se queda con la primera columna del resumen: las facturas ya agrupadas y en el orden en que AGRUPARPOR las ha dejado. Este es el punto importante, porque significa que el cruce se hace contra el orden real del resultado, sea cual sea.

MAP recorre esa columna clave a clave. Por cada factura, ejecuta el LAMBDA interno.

FILTRAR + UNIRCADENAS traen los comentarios. FILTRAR saca todos los comentarios cuya factura coincide con la clave actual, y UNIRCADENAS los junta separados por coma. El tercer argumento de FILTRAR, la cadena vacía, evita el error cuando una factura no tiene ningún comentario asociado. Y como FILTRAR puede devolver varias filas, una misma factura admite varios comentarios, que salen concatenados en la misma celda.

APILARH pega las dos partes. Resumen a la izquierda, comentarios a la derecha, todo en una sola matriz derramada.

El fichero: tres hojas y una macro de regalo

El archivo adjunto del caso está montado con la separación bien hecha:

  • Datos — la tabla de facturas con sus importes
  • Comentarios — la tabla auxiliar de dos columnas (factura y texto)
  • Resumen — la fórmula en acción

Y viene con un extra práctico: una macro VBA llamada AñadirComentario que abre un InputBox desde la propia hoja de resumen. Escribes el comentario ahí mismo, la macro lo guarda en la tabla auxiliar, y el resumen lo recoge en el siguiente recálculo. Así conservas la comodidad de anotar sobre el informe sin romper el modelo de datos que hay debajo.

Funciones clave

  • AGRUPARPOR — agrupa y agrega en una sola fórmula derramada; sustituye a la tabla dinámica cuando quieres un resultado vivo.
  • TOMAR — recorta filas o columnas del principio de una matriz; aquí aísla la columna de claves.
  • MAP — aplica un LAMBDA a cada elemento de una matriz y devuelve una matriz del mismo tamaño.
  • FILTRAR — trae todas las filas que cumplen una condición, con valor alternativo si no hay ninguna.
  • UNIRCADENAS — une varios textos con un separador, ignorando vacíos si se lo pides.
  • APILARH — pega matrices en horizontal para componer el resultado final.

Conclusión

El error de partida era escribir un dato manual encima de un resultado calculado. En cuanto los comentarios viven en su propia tabla y se cruzan por clave, el problema desaparece del todo: puedes añadir facturas, reordenar, filtrar o cambiar el criterio de agrupación, que cada anotación sigue a su factura.

Es un patrón que vale para mucho más que comentarios. Cualquier dato manual que quieras acompañar a un resumen dinámico (un responsable asignado, un estado, una prioridad) se resuelve exactamente igual. En la comunidad de InflueXcel salen casos así continuamente, y casi siempre la mejor respuesta no es una fórmula más larga, sino mover el dato al sitio correcto.

Más casos con estas funciones

Más contenido de Excel en InflueXcel