¿Cómo unir dos hojas de trabajo en Excel como lo haría en SQL?

121

Tengo dos hojas de trabajo en dos archivos de Excel diferentes. Ambos contienen una lista de nombres, números de identificación y datos asociados. Una es una lista maestra que incluye campos demográficos generales, y la otra es una lista que solo incluye nombre e identificación, y una dirección. Esta lista fue reducida de la lista maestra por otra oficina.

Quiero usar la segunda lista para filtrar la primera. Además, quiero que los resultados incluyan otros campos de la hoja de trabajo maestra junto con los campos de dirección de la segunda hoja de trabajo. Sé cómo podría hacer esto muy fácilmente con una unión interna de la base de datos, pero no tengo muy claro cómo hacerlo de manera eficiente en Excel. ¿Cómo se pueden unir dos hojas de trabajo en Excel? Puntos de bonificación para mostrar cómo hacer combinaciones externas también, y preferiría saber cómo hacerlo sin necesidad de una macro.

Joel Coehoorn
fuente
1
La siguiente página me parece muy útil: randomwok.com/excel/how-to-use-index-match
Tommy Bravo
randomwok.com/excel/how-to-use-index-match => especialmente el "recordatorio" fácil al final:=INDEX ( Column_I_want_a_return_value_from , ( MATCH ( My_Lookup_Value , Column_I_want_to_Lookup_against , 0 ))
Tommy Bravo

Respuestas:

157

Por 2007+ uso Data> From Other Sources> From Microsoft Query:

  1. elige Excel Filey selecciona tu primer excel
  2. elija columnas
    (si no ve ninguna lista de columnas, asegúrese de marcar Options> System Tables)
  3. ir a Data> Connections> [elija la conexión que acaba de crear]> Properties> Definition>Command text

Ahora puede editar esto Command textcomo SQL. No estoy seguro de qué sintaxis se admite, pero probé uniones implícitas, "unión interna", "unión izquierda" y uniones que funcionan. Aquí hay una consulta de muestra:

SELECT *
FROM `C:\Users\Peter\Documents\Excel-to-excel\Source_1.xlsx`.`Sheet1$` a
LEFT JOIN `C:\Users\Peter\Documents\Excel-to-excel\Source_2.xlsx`.`Sheet1$` b
ON a.col2 = b.col2
Aprillion
fuente
1
¿Hay alguna manera de evitar codificar el camino? ¿Funcionaría el camino relativo?
Rekin
25
Como beneficio adicional, Microsoft Query le permite experimentar controles comunes de estilo de 16 bits para abrir el archivo de Excel y para cuadros de mensaje. De esa manera puedes recordar cuando eras joven. :-)
Edward Brey
¿Funciona esto con archivos CSV? Estoy usando MS Office Professional Plus 2010 y no veo cómo seguir el paso 3: ¿dejo el diálogo en el paso 2? No hay "elige tu nueva conexión" en mi cuadro de diálogo Conexiones.
John Freeman
@JohnFreeman porque debe elegir una de las opciones disponibles de acuerdo con sus necesidades (por ejemplo, 'Agregar ...')
Aprillion
3
Tenga en cuenta que es posible que aparezca un cuadro de diálogo que dice 'Esta fuente de datos no contiene tablas visibles', seguido de un cuadro de diálogo 'Asistente de consulta - Elegir columnas'. Es desde este diálogo que desea hacer clic en el botón 'Opciones', luego marque la casilla de verificación 'Tablas del sistema' para ver los datos que desea consultar.
Tola Odejayi
11

Apoye la respuesta aceptada. Solo quiero enfatizar en "elegir columnas (si no ve ninguna lista de columnas, asegúrese de marcar Opciones> Tablas del sistema)"

Una vez que seleccione el archivo de Excel, es muy probable que vea un this data source contains no visible tablesmensaje, y las pestañas y columnas disponibles no son ninguna. Microsoft admitió que es un error que las pestañas en los archivos de Excel se traten como "Tablas del sistema", y la opción para "Tablas del sistema" no está seleccionada de forma predeterminada. Así que no se asuste en este paso, solo necesita hacer clic en "opción" y marcar "Tablas del sistema", luego verá las columnas disponibles.

Ben Lin
fuente
8

VLOOKUP y HLOOKUP podrían usarse para buscar claves primarias coincidentes (almacenadas vertical u horizontalmente) y devolver valores de columnas / filas de 'atributos'.

Reuben L.
fuente
muy útil para las hojas en el mismo libro (pero me parece funciones INDEX + Match incluso más útil), un poco más complicado cuando se actualizan los datos de los libros externos cerrados ...
Aprillion
7

Puede usar Microsoft Power Query, disponible para versiones más nuevas de Excel (similar a la respuesta aceptada, pero mucho más simple y fácil). Las llamadas de Power Query se unen a 'fusiones'.

La forma más fácil es tener sus 2 hojas de Excel como tablas de Excel. Luego, en Excel, vaya a la pestaña de la cinta de Power Query y haga clic en el botón 'De Excel'. Una vez que haya importado ambas tablas en Power Query, seleccione una y haga clic en 'Combinar'.

otrofred
fuente
3
Mucho más fácil que cualquiera de las otras opciones propuestas. Esta debería ser la respuesta! Power Query se incluye ahora en Excel 2016 en la pestaña Datos .
SliverNinja - MSFT
1
Otra característica que no parece existir en Mac 😕
juandesant
4

Si bien creo que la respuesta de Aprillion con Microsoft Query es excelente, me inspiró a usar Microsoft Access para unirme a las hojas de datos que encontré mucho más fáciles.

Necesitas tener instalado MS Access, por supuesto.

Pasos:

  • Cree una nueva base de datos de Access (o use una base de datos reutilizable).
  • Úselo Get External Datapara importar sus datos de Excel como nuevas tablas.
  • Use Relationshipspara mostrar cómo se unen sus tablas.
  • Establezca el tipo de relación para que coincida con lo que desea (que representa la unión izquierda, etc.)
  • Cree una nueva consulta que se una a sus tablas.
  • Úselo External Data->Export to Excelpara generar sus resultados.

Realmente no podría haberlo hecho sin la gran respuesta de Aprillion.

Dizzley
fuente
Nunca antes había usado el acceso, pero esto solo me llevó 10 minutos. Copié / pegué las columnas de Excel en 2 tablas en lugar de importar.
jiggunjer
3

No puede realizar uniones de estilo SQL en tablas de Excel desde Excel. Dicho esto, hay varias formas de lograr lo que estás tratando de hacer.

En Excel, como dice Reuben, las fórmulas que probablemente funcionarán mejor son VLOOKUPy HLOOKUP. En ambos casos, coincide en una fila única y devuelve el valor de la columna \ fila dada a la izquierda \ abajo de la identificación encontrada.

Si solo desea agregar un par de campos adicionales a la segunda lista, agregue las fórmulas a la segunda lista. Si desea una tabla de estilo de "combinación externa", agregue la VLOOKUPfórmula a la primera lista ISNApara probar si se encontró la búsqueda. Si la Ayuda de Excel no le brinda suficientes detalles sobre cómo usarlos en su instancia particular, infórmenos.

Si prefiere usar SQL, luego vincule los datos a su programa de base de datos, cree su consulta y exporte los resultados nuevamente a Excel. (En Access puede importar hojas de trabajo de Excel o rangos con nombre como una tabla vinculada).

mischab1
fuente
12
en realidad, puedes - se llama Microsoft Query
Aprillion
3

En XLTools.net hemos creado una buena alternativa para que MS Query funcione especialmente con consultas SQL en tablas de Excel. Se llama XLTools SQL Queries . Es mucho más fácil de usar en lugar de MS Query y funciona muy bien si solo necesita crear y ejecutar SQL, sin VBA, sin manipulaciones complejas con MS Query ...

Con esta herramienta, puede crear cualquier consulta SQL en las tablas de los libros de Excel utilizando el editor SQL incorporado y ejecutarla inmediatamente con la opción de colocar el resultado en una hoja de trabajo nueva o existente.

Puede usar casi cualquier tipo de combinación, incluida la IZQUIERDA EXTERIOR IZQUIERDA (solo no se admite la UNIÓN EXTERIOR DERECHA y la UNIÓN EXTERNA COMPLETA).

Aquí hay un ejemplo:

Consultas SQL de XLTools - Generador de consultas

Peter Liapin
fuente
2

Para usuarios de Excel 2007: Datos> Desde otras fuentes> Desde Microsoft Query> busque el archivo Excel

De acuerdo con este artículo , las consultas desde XLS versión 2003 podrían dar como resultado "Esta fuente de datos no contiene tablas visibles". error porque sus hojas de trabajo se tratan como tabla SYSTEM. Por lo tanto, verifique las "Tablas del sistema" en las opciones del cuadro de diálogo "Asistente para consultas: elegir columnas" cuando cree la consulta.

Para definir su unión: cuadro de diálogo Consulta de Microsoft> menú Tabla> Uniones ...

Para devolver datos a su hoja de Excel original, elija "Devolver datos a hoja de Excel" en el cuadro de diálogo Microsoft Query> Menú Archivo.

clarkttfu
fuente
0

Si está lo suficientemente familiarizado con las bases de datos, puede usar SQL Server para conectar ambas hojas de trabajo como servidores vinculados y luego usar T-SQL para hacer su trabajo de datos de fondo. Luego termine conectando Excel nuevamente a SQL y extraiga los datos en una tabla (regular o pivote). También puede considerar usar Powerpivot; permitirá uniones entre cualquier fuente de base de datos, incluido Excel utilizado como bases de datos planas.

dav
fuente
2
Tiene razón, pero la pregunta inicial se basa en el uso de una hoja de cálculo (o dos) para realizar una función de base de datos, por lo que no estoy seguro de una forma realmente eficiente de realizar la tarea.
DAV
0

Buscando el mismo problema, me encontré con RDBMerge , que creo que es una forma fácil de usar para combinar datos de múltiples libros de Excel, archivos csv y xml en un libro de trabajo de resumen.

laltomas
fuente