Combinar tablas con columnas diferentes en Power Query sin perder datos
Nuevo caso práctico: un miembro tiene archivos de datos de 2024 (54 columnas) y 2025 (109 columnas) en una carpeta. Al importarlos con "Desde carpeta" en Power Query, las columnas que no existen en 2024 aparecen como null, perdiendo los datos del archivo más antiguo.
Gerson explica el enfoque correcto y comparte un vídeo tutorial: la clave es que Power Query, al combinar archivos con columnas distintas, necesita una tabla de referencia que defina la estructura final. Con Table.Combine o la opción "Anexar consultas", PQ maneja las columnas que faltan rellenándolas con null, pero las que existen en ambos archivos se mantienen correctamente.
Nacho aclara el flujo: si importas con "Desde carpeta", Power Query toma el primer archivo como plantilla. Si ese archivo tiene menos columnas, las columnas adicionales del segundo archivo se pierden.
La solución: en vez de usar directamente "Desde carpeta", importar los archivos por separado y luego usar "Anexar consultas", o bien configurar la muestra del conector de carpeta para que use el archivo con más columnas como referencia.
Otro miembro aporta un tip adicional: usar Excel.CurrentWorkbook() para cuando los rangos o tablas están dentro del mismo libro, reconociéndolos todos de golpe sin tener que crear conexiones manuales una por una.
Un problema muy común en entornos donde los formatos de datos evolucionan de un año a otro.
Y si lo que cambia es el nombre de las columnas
Cuando las columnas son las mismas pero llegan con otro nombre (site en vez de centro, periodo en vez de mes), anexar no basta. El vídeo de esta ficha monta una tabla de control, con el nombre de origen y el nombre final, y una función con Table.ColumnNames, List.Zip y Table.RenameColumns que renombra cada tabla antes de combinarlas. Un nombre nuevo se resuelve añadiendo una fila a la tabla de control.
El problema: el fichero de 2024 tiene 54 columnas y el de 2025 tiene 109
Un miembro de la comunidad tenía en una carpeta los datos de dos ejercicios: el fichero de 2024 con 54 columnas y el de 2025 con 109. El sistema que genera los informes había crecido, y con él el número de campos.
Al importar la carpeta con Power Query, el resultado fue el esperado a medias: las columnas nuevas de 2025 aparecían llenas para ese año y vacías para 2024, cosa lógica porque no existían. Pero además faltaban datos del fichero antiguo. Columnas que sí estaban en 2024 no aparecían en la consolidación.
Ese segundo síntoma es el que delata la causa real, y no tiene nada que ver con que los ficheros sean distintos.
Por qué pasa: el primer archivo manda
Nacho lo explicó en una frase que conviene grabarse: cuando importas con "Desde carpeta", Power Query toma el primer archivo como plantilla.
El conector no inspecciona todos los ficheros para deducir una estructura común. Coge uno como muestra (el archivo de ejemplo que verás en el panel de consultas), genera a partir de él una función de transformación, y aplica esa función a todos los demás.
La consecuencia es directa: la función solo sabe extraer las columnas que existían en la muestra. Si el archivo de ejemplo es el de 2024, las 55 columnas extra de 2025 no se extraen, sencillamente porque la función no las contempla. Y al revés, si la muestra fuera la de 2025, las columnas que solo existen ahí saldrían vacías para 2024, que es el comportamiento correcto y esperable.
Es decir: no estás ante un fallo, estás ante una decisión que Power Query tomó por ti sin avisar.
Las soluciones
Gerson explicó el enfoque correcto y compartió un vídeo tutorial. Hay dos caminos según lo que te convenga.
Opción A: importar por separado y anexar. En vez de tirar del conector de carpeta, cargas cada fichero como consulta independiente y luego usas Anexar consultas. Al anexar, Power Query hace la unión de todas las columnas de todas las consultas: las que existen en ambas se emparejan por nombre y las que solo están en una se rellenan con nulos en la otra. Esto es lo que hace por detrás Table.Combine, y es exactamente el comportamiento que quieres.
Es más manual, pero tienes control total. Con dos o tres ficheros al año es perfectamente razonable.
Opción B: cambiar el archivo de muestra del conector. Si prefieres seguir con la carpeta (porque cada mes caen ficheros nuevos y no quieres tocar la consulta), configura el conector para que use como muestra el archivo con más columnas, el de 2025 en este caso. La función generada contemplará entonces todas las columnas, y para los ficheros antiguos las que falten saldrán con nulos.
El punto débil de esta opción es evidente: el día que llegue un fichero con columnas nuevas, habrá que volver a cambiar la muestra. Pero mientras la estructura más completa sea la de referencia, funciona sin mantenimiento.
El tip extra: Excel.CurrentWorkbook
Otro miembro aportó algo que no resuelve este caso pero ahorra muchísimo trabajo en el escenario vecino: cuando las tablas o rangos que quieres consolidar están dentro del mismo libro, Excel.CurrentWorkbook te los reconoce todos de golpe.
En vez de crear una conexión por cada tabla y luego anexarlas una a una, esa función devuelve una tabla con todas las tablas y rangos con nombre del libro actual. Filtras las que te interesan por nombre y expandes. Si tienes doce hojas con una tabla cada una, la diferencia entre hacerlo así o a mano es de veinte minutos a dos.
El problema vecino: las mismas columnas con otro nombre
Hay una variante de este dolor que anexar no resuelve: que las columnas sean las mismas, pero alguien les cambie el nombre en origen (site en vez de centro, periodo en vez de mes, importe en vez de ventas). Power Query las trata como columnas distintas y la consolidación sale llena de huecos.
La solución del vídeo que acompaña a esta ficha es una tabla de control con dos columnas, el nombre que llega en origen y el nombre que quieres en el modelo, y una función que renombra cada tabla antes de combinarla:
Table.ColumnNameslee los nombres reales de la tabla yTable.FromListlos convierte en una tabla.- Se combina con la tabla de control para traer el nombre final. Los que no figuran en ella conservan el original.
List.Zipempareja cada nombre de origen con su destino yTable.RenameColumnsaplica todos los cambios de una vez.- Todo eso se convierte en una función (
transformaNombres) que se aplica a cada tabla con una columna personalizada.
Cuando aparezca un nombre nuevo, basta con añadir una fila a la tabla de control y actualizar.
Conceptos clave
- Archivo de muestra del conector de carpeta — el fichero que Power Query usa como plantilla para generar la función de transformación. Determina qué columnas se extraen de todos los demás.
- Anexar consultas — la unión que sí contempla estructuras distintas: empareja columnas por nombre y rellena con nulos las que faltan.
Table.Combine— la función M que hay detrás de anexar; útil si prefieres escribirlo en código.Excel.CurrentWorkbook— reconoce de golpe todas las tablas y rangos con nombre del libro actual.- Nulos por columna ausente — comportamiento normal y deseable; no confundirlo con pérdida de datos.
Conclusión
La clave para no volver a caer en esto es entender la diferencia entre combinar desde carpeta y anexar consultas. La primera asume que todos los ficheros comparten estructura y se apoya en uno como referencia; la segunda está diseñada precisamente para que no la compartan.
Cuando tus formatos de datos evolucionan de un año a otro (y en cualquier empresa acaban evolucionando), anexar es casi siempre la respuesta más segura. Si necesitas la comodidad de la carpeta, al menos asegúrate de que la muestra es el fichero más completo, y revísalo cada vez que cambie la estructura del origen. Casos así, con ficheros que crecen de ejercicio en ejercicio, son de los más frecuentes en la comunidad de InflueXcel.
Más casos con estas funciones
Más contenido de Excel en InflueXcel
- Power Query no convierte «1:01:05 p. m.» a hora: el desplegable ofrece culturas que luego no sabe leer CasoNuevo caso de la comunidad, y de los que dejan mal sabor: una columna de horas que parece limpia y que Power Query se niega a convertir. El
- Power Query: rutas dinámicas para compartir ficheros sin romper conexiones CasoUn miembro de la comunidad plantea un problema muy frecuente: tiene una consulta de Power Query con una ruta de red fija (\\servidor\shared-
- Optimización de Power Query para consultas masivas a API REST CasoInteresante caso de optimización en Power Query. Randolfo, desde Guatemala, necesitaba consultar el estado de más de 100 envíos de paqueterí
- Mejora un 90% el rendimiento de Power Query con SQLite TutorialPower Query es una herramienta potente para consolidar, combinar y calcular datos, pero cuando trabajamos con millones de registros y cálcul
- Separar artículos concatenados en filas: 4 enfoques (fórmulas, Power Query y Python) CasoCaso interesante con cuatro enfoques muy distintos para resolver un mismo problema: una tabla tiene una columna de artículos concatenados co
- Consolidar múltiples archivos Excel con Power Query desde carpeta CasoUn miembro necesitaba consolidar datos de múltiples archivos Excel almacenados en una carpeta. El reto adicional: cada archivo contenía vari
- Extraer datos de archivos XML complejos: Power Query, VBA y Power Automate CasoSergio plantea un problema real con datos abiertos del gobierno español: archivos XML de licitaciones públicas con más de 30 niveles de anid
- Retos de entrevista con Power Query TutorialTres pruebas técnicas reales de las que caen en procesos de selección para puestos de datos, resueltas paso a paso con Power Query. Sirven i
- REDUCE de CERO a PRO TutorialCon REDUCE podrás transformar listas simples en análisis completos y automatizar cálculos que antes parecían imposibles. Si trabajas con dat
- Lollipop chart en Excel con barras de error TutorialEl lollipop chart es el sustituto elegante del gráfico de barras cuando tienes muchos elementos y el cuadro de mando empieza a pesar: un pal