Come posso unire due fogli di lavoro in Excel come farei in SQL?


121

Ho due fogli di lavoro in due diversi file Excel. Entrambi contengono un elenco di nomi, numeri ID e dati associati. Uno è un elenco principale che include campi demografici generali e l'altro è un elenco che include solo nome e ID e un indirizzo. Questo elenco è stato ridotto dall'elenco principale da un altro ufficio.

Voglio usare il 2 ° elenco per filtrare il primo. Inoltre, desidero che i risultati includano altri campi del foglio di lavoro principale accanto ai campi degli indirizzi del secondo foglio di lavoro. So come potrei farlo molto facilmente con un join interno del database, ma sono meno chiaro su come farlo in modo efficiente in Excel. Come si possono unire due fogli di lavoro in Excel? Punti bonus per mostrare come fare anche i join esterni e preferirei molto sapere come farlo senza bisogno di una macro.


1
Trovo molto utile la seguente pagina: randomwok.com/excel/how-to-use-index-match
Tommy Bravo

randomwok.com/excel/how-to-use-index-match => in particolare il semplice "promemoria" alla fine:=INDEX ( Column_I_want_a_return_value_from , ( MATCH ( My_Lookup_Value , Column_I_want_to_Lookup_against , 0 ))
Tommy Bravo

Risposte:


157

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

  1. scegli Excel Filee seleziona il tuo primo Excel
  2. scegli colonne
    (se non vedi alcun elenco di colonne, assicurati di selezionare Options> System Tables)
  3. andare a Data> Connections> [scegliere la connessione appena creata]> Properties> Definition>Command text

Ora puoi modificarlo Command textcome SQL. Non sono sicuro di quale sia la sintassi supportata, ma ho provato i join impliciti, "inner join", "left join" e i sindacati che funzionano tutti. Ecco una query di esempio:

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

1
C'è un modo per evitare l'hardcoding del percorso? Il percorso relativo funzionerebbe?
Rekin,

25
Come ulteriore vantaggio, Microsoft Query ti consente di sperimentare controlli comuni a 16 bit per l'apertura del file Excel e per le finestre di messaggio. In questo modo puoi ricordare quando eri giovane. :-)
Edward Brey l'

Funziona con i file CSV? Sto utilizzando MS Office Professional Plus 2010 e non vedo come seguire il passaggio 3: posso lasciare la finestra di dialogo nel passaggio 2 sospesa? Non c'è "scegli la tua nuova connessione" nella finestra di dialogo Connessioni.
John Freeman,

@JohnFreeman perché devi scegliere una delle opzioni disponibili in base alle tue esigenze (es. 'Aggiungi ...')
Aprillion

3
Si noti che è possibile che venga visualizzata una finestra di dialogo che dice "Questa origine dati non contiene tabelle visibili", seguita da una finestra di dialogo "Procedura guidata query - Scegli colonne". È da questa finestra di dialogo che si desidera fare clic sul pulsante "Opzioni", quindi selezionare la casella di controllo "Tabelle di sistema" per visualizzare i dati che si desidera interrogare.
Tola Odejayi,

11

Sostieni la risposta accettata. Voglio solo sottolineare "scegli colonne (se non vedi alcun elenco di colonne, assicurati di selezionare Opzioni> Tabelle di sistema)"

Dopo aver selezionato il file Excel, molto probabilmente vedrai il this data source contains no visible tablesprompt e le schede e le colonne disponibili non sono più disponibili. Microsoft ha ammesso che è un bug che le schede nei file Excel sono trattate come "Tabelle di sistema" e l'opzione "Tabelle di sistema" non è selezionata per impostazione predefinita. Quindi non farti prendere dal panico in questo passaggio, devi solo fare clic su "opzione" e selezionare "Tabelle di sistema", quindi vedi le colonne disponibili.


8

VLOOKUP e HLOOKUP potrebbero essere utilizzati per cercare chiavi primarie corrispondenti (memorizzate verticalmente o orizzontalmente) e restituire valori da colonne / righe 'attributo'.


molto utile per i fogli sulla stessa cartella di lavoro (ma trovo le funzioni INDICE + MATCH ancora più utili), un po 'più complicato quando si aggiornano i dati da cartelle di lavoro esterne chiuse ...
Aprillion

7

Puoi utilizzare Microsoft Power Query, disponibile per le versioni più recenti di Excel (simile alla risposta accettata, ma molto più semplice e facile). Le chiamate Power Query si uniscono a "fusioni".

Il modo più semplice è avere i tuoi 2 fogli Excel come tabelle Excel. Quindi in Excel, vai alla scheda della barra multifunzione di Power Query e fai clic sul pulsante "Da Excel". Dopo aver importato entrambe le tabelle in Power Query, selezionane una e fai clic su "Unisci".


3
Molto più facile di qualsiasi altra opzione proposta. Questa dovrebbe essere la risposta! Power Query è ora incluso in Excel 2016 nella scheda Dati .
SliverNinja - MSFT,

1
Un'altra caratteristica che non sembra esistere sul Mac ju
juandesant

4

Mentre penso che la risposta di Aprillion usando Microsoft Query sia eccellente, mi ha ispirato a usare Microsoft Access per unire i fogli dati che ho trovato molto più facile.

Devi avere MS Access installato ovviamente.

passi:

  • Creare un nuovo database di Access (o utilizzare un DB scratch).
  • Utilizzare Get External Dataper importare i dati di Excel come nuove tabelle.
  • Utilizzare Relationshipsper mostrare come vengono unite le tabelle.
  • Imposta il tipo di relazione in modo che corrisponda a ciò che desideri (che rappresenta il join sinistro ecc.)
  • Crea una nuova query che unisce le tue tabelle.
  • Utilizzare External Data->Export to Excelper generare i risultati.

Non avrei potuto farlo senza la grande risposta di Aprillion.


Non ho mai usato l'accesso prima di oggi, ma questo mi ha richiesto solo 10 minuti. Ho copiato / incollato le colonne di Excel in 2 tabelle invece di importarle.
jiggunjer,

3

Non è possibile preformare i join in stile SQL su tabelle Excel da Excel. Detto questo, ci sono molti modi per realizzare ciò che stai cercando di fare.

In Excel, come dice Reuben, le formule che probabilmente funzioneranno meglio sono VLOOKUPe HLOOKUP. In entrambi i casi, si esegue la corrispondenza su una riga univoca e restituisce il valore della colonna \ riga a sinistra \ in basso dall'ID trovato.

Se vuoi solo aggiungere un paio di campi extra al secondo elenco, quindi aggiungi le formule al secondo elenco. Se si desidera una tabella di stile "join esterno", aggiungere la VLOOKUPformula al primo elenco ISNAper verificare se la ricerca è stata trovata. Se la Guida di Excel non ti fornisce abbastanza dettagli su come utilizzarli nella tua specifica istanza, faccelo sapere.

Se si preferisce utilizzare SQL, collegare i dati nel programma di database, creare la query ed esportare i risultati in Excel. (In Access è possibile importare fogli di lavoro Excel o intervalli nominati come tabella collegata.)


12
in realtà, puoi - si chiama Microsoft Query
Aprillion

3

A XLTools.net abbiamo creato una buona alternativa per MS Query per funzionare soprattutto con query SQL su tabelle Excel. Si chiama XLTools SQL Queries . È molto più facile da usare piuttosto che MS Query e funziona davvero bene se hai solo bisogno di creare ed eseguire SQL: niente VBA, nessuna manipolazione complessa con MS Query ...

Con questo strumento è possibile creare qualsiasi query SQL su tabelle nelle cartelle di lavoro di Excel utilizzando l'editor SQL incorporato ed eseguirlo immediatamente con l'opzione per inserire il risultato in un foglio di lavoro nuovo o esistente.

È possibile utilizzare quasi tutti i tipi di join incluso LEFT OUTER JOIN (solo RIGHT OUTER JOIN e FULL OUTER JOIN non sono supportati).

Ecco un esempio:

Query SQL di XLTools - Query Builder


2

Per l'utente di Excel 2007: Dati> Da altre origini> Da query Microsoft> selezionare il file Excel

Secondo questo articolo , una query da XLS versione 2003 potrebbe comportare "Questa origine dati non contiene tabelle visibili". errore perché i fogli di lavoro sono trattati come tabella SYSTEM. Quindi controlla le "Tabelle di sistema" nella finestra di dialogo "Query Wizard - Scegli colonne" quando crei la query funzionerà.

Per definire il join: finestra di dialogo Query Microsoft> menu Tabella> Join ...

Per restituire i dati al foglio Excel originale, selezionare "Restituisci dati al foglio Excel" dalla finestra di dialogo Query Microsoft> menu File.


0

Se hai familiarità con i database, puoi utilizzare SQL Server per connettere entrambi i fogli di lavoro come server collegati e quindi utilizzare T-SQL per far funzionare i tuoi dati di back-end. Quindi terminare ricollegando Excel a SQL ed estrarre i dati in una tabella (normale o pivot). Puoi anche considerare l'utilizzo di Powerpivot; consentirà join tra qualsiasi origine di database, incluso Excel utilizzato come database flat.


2
Hai ragione, ma la domanda iniziale si basa sull'utilizzo di un foglio di calcolo (o due) per eseguire una funzione di database, quindi non sono sicuro di un modo davvero efficiente per eseguire l'attività.
dav

0

Cercando lo stesso problema mi sono imbattuto in RDBMerge , che penso sia un modo facile da usare per unire i dati da più cartelle di lavoro Excel, file CSV e XML in una cartella di lavoro di riepilogo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.