COMBINARX falla con datos de tablas dinámicas: cómo solucionarlo con AGRUPARPOR

Un miembro de la comunidad utiliza COMBINARX para cruzar datos financieros (códigos de cuenta, nombres y comentarios) entre dos años fiscales (FY2024 y FY2025). La fórmula funciona perfectamente con datos limpios, pero al alimentarla con el resultado de tablas dinámicas, los resultados se duplican y descuadran.

El problema de las tablas dinámicas

Las tablas dinámicas, al agrupar datos, introducen celdas vacías en las filas intermedias de cada grupo. Cuando COMBINARX intenta relacionar los campos entre ambas tablas, esos vacíos se cruzan entre sí generando coincidencias falsas y filas duplicadas.

Es un problema sutil: la tabla dinámica parece correcta visualmente (Excel muestra los valores agrupados), pero las celdas que no repiten el valor del grupo están realmente vacías. Y COMBINARX las ve tal cual.

Solución 1: sustituir las tablas dinámicas por AGRUPARPOR

La solución principal consiste en reemplazar las tablas dinámicas por AGRUPARPOR, que genera exactamente el mismo resultado agregado pero sin celdas vacías:

``
=AGRUPARPOR(
datos[Código cuenta]; datos[Cuenta]; datos[Comentario];
datos[Importe]; SUMA
)
`

Con los datos agrupados por AGRUPARPOR, cada fila tiene todos sus campos rellenos y COMBINARX funciona correctamente sin duplicados.

Como señala Leo en su solución: "La tabla dinámica te introduce vacíos en los agrupamientos. Se ha creado un agrupado con función AGRUPARPOR para simular exactamente la tabla dinámica".

Solución 2: alternativa con FILTRAR

Leo también propone una variante usando FILTRAR en vez de COMBINARX, que permite cambiar la dirección de la comparación (2024→2025 o 2025→2024) simplemente intercambiando los nombres de las variables en la fórmula.

Solución 3: comparación completa con REDUCE + LAMBDA

Tras el feedback de Juan, Leo amplía su solución para manejar un escenario más complejo: detectar elementos que están en una tabla pero no en la otra, y mostrarlos alineados en la posición correcta. La fórmula combina REDUCE, LAMBDA, ELEGIRCOLS, FILTRAR y APILARV/H:

`
=LET(
t_1; D5:E10;
t_2; H6:I10;
C; ELEGIRCOLS;
F; FILTRAR;
s; SI(SECUENCIA(;COLUMNAS(t_1));"");
SI.ND(
EXCLUIR(
REDUCE("";
UNICOS(C(APILARV(t_1;t_2);1));
LAMBDA(a;b;
APILARV(a;
APILARH(
F(t_1;C(t_1;1)=b;s);
F(t_2;C(t_2;1)=b;"")
);""
)
)
);1
);""
)
)
`

El truco está en la variable s: una secuencia de vacíos con tantas columnas como la tabla 1. Cuando un elemento de la tabla 2 no tiene correspondencia en la tabla 1, la fórmula devuelve esos vacíos como placeholder, manteniendo los datos de la tabla 2 alineados a la derecha en su posición correcta.

Lección clave

Las tablas dinámicas son excelentes para visualizar datos, pero sus celdas vacías en agrupaciones pueden romper fórmulas que dependen de valores reales en cada celda. AGRUPARPOR es una alternativa moderna que produce datos limpios, perfectos como origen para otras fórmulas. Y para comparaciones complejas entre tablas, REDUCE + LAMBDA` permite iterar sobre valores únicos y construir resultados combinados con total flexibilidad.

Archivos adjuntos: ZIP con los 3 ficheros Excel — el problema original de Juan, la solución con AGRUPARPOR y la alternativa con FILTRAR.

El problema: COMBINARX que duplica al usar tablas dinámicas

Un miembro de la comunidad cruzaba datos financieros (códigos de cuenta, nombres y comentarios) entre dos años fiscales con COMBINARX. Con datos limpios, la fórmula funcionaba perfectamente. Pero al alimentarla con el resultado de tablas dinámicas, los resultados se duplicaban y descuadraban.

El síntoma es desconcertante porque la tabla dinámica parece correcta a la vista. El problema está en lo que no se ve.

Por qué pasa: las celdas vacías de las tablas dinámicas

Cuando una tabla dinámica agrupa datos, deja celdas vacías en las filas intermedias de cada grupo: Excel muestra el valor del grupo solo en la primera fila y deja en blanco las siguientes, aunque visualmente parezca que el grupo entero está etiquetado.

COMBINARX ve esas celdas tal cual: vacías. Y al relacionar los campos entre ambas tablas, los vacíos de una se cruzan con los vacíos de la otra, generando coincidencias falsas y filas duplicadas. Es un problema sutil precisamente porque la tabla dinámica engaña al ojo.

Solución 1: sustituir la dinámica por AGRUPARPOR

La solución principal es dejar de usar la tabla dinámica como origen y reemplazarla por AGRUPARPOR, que produce el mismo resultado agregado pero sin celdas vacías: cada fila tiene todos sus campos rellenos.

=AGRUPARPOR(
    datos[Código cuenta]; datos[Cuenta]; datos[Comentario];
    datos[Importe]; SUMA
)

Con los datos así agrupados, COMBINARX vuelve a funcionar sin duplicados. Como resumió Leo: la tabla dinámica introduce vacíos en los agrupamientos, y AGRUPARPOR simula exactamente la dinámica pero con datos limpios.

Solución 2: cambiar de dirección con FILTRAR

Leo también propuso una variante con FILTRAR en lugar de COMBINARX. La ventaja: permite cambiar fácilmente la dirección de la comparación (de un año al otro o al revés) simplemente intercambiando los nombres de las variables en la fórmula. Útil cuando quieres ver qué hay en una tabla que no está en la otra, y viceversa.

Solución 3: comparación completa con REDUCE + LAMBDA

Tras el feedback de Juan, el caso se complicó: había que detectar los elementos presentes en una tabla pero no en la otra y mostrarlos alineados en su posición correcta. Leo amplió la solución iterando sobre los valores únicos con REDUCE y LAMBDA:

=LET(
    t_1; D5:E10;
    t_2; H6:I10;
    C; ELEGIRCOLS;
    F; FILTRAR;
    s; SI(SECUENCIA(; COLUMNAS(t_1)); "");
    SI.ND(
        EXCLUIR(
            REDUCE("";
                UNICOS(C(APILARV(t_1; t_2); 1));
                LAMBDA(a; b;
                    APILARV(a;
                        APILARH(
                            F(t_1; C(t_1; 1)=b; s);
                            F(t_2; C(t_2; 1)=b; "")
                        ); ""
                    )
                )
            ); 1
        ); ""
    )
)

El truco está en la variable s: una fila de vacíos con tantas columnas como la tabla 1. Cuando un elemento de la tabla 2 no tiene correspondencia en la tabla 1, la fórmula devuelve esos vacíos como relleno, manteniendo alineados a la derecha los datos de la tabla 2 en su posición correcta. REDUCE recorre cada valor único y va apilando el resultado con APILARV.

Funciones clave

  • AGRUPARPOR: agrupa sin dejar celdas vacías, ideal como origen de otras fórmulas.
  • COMBINARX: cruza dos tablas por campos comunes; sensible a los vacíos.
  • FILTRAR: alternativa flexible que permite invertir la dirección de la comparación.
  • REDUCE + LAMBDA: iteran sobre valores únicos para construir comparaciones a medida.
  • UNICOS, ELEGIRCOLS, APILARV, EXCLUIR, SI.ND: apoyos para ensamblar y limpiar el resultado.

Conclusión

Las tablas dinámicas son estupendas para mirar datos, pero sus celdas vacías las convierten en un mal origen para fórmulas que necesitan valores reales en cada celda. AGRUPARPOR es la alternativa moderna que produce datos limpios; y para comparaciones complejas entre tablas, REDUCE + LAMBDA te dan control total. Casos así se comparten cada semana en la comunidad de InflueXcel.

Más casos con estas funciones

Más contenido de Excel en InflueXcel