2010-11-11 25 views
25

Ho due file CSV con una colonna comune e voglio "Unire" le tabelle insieme sulla colonna comune.Unire due fogli di calcolo su una colonna comune in Excel o OpenOffice

Ad esempio: Unire 'A' con 'B' equivale a 'Risultato'. Se una tabella ha un valore chiave che non esiste nell'altra tabella è appena lasciato vuoto.

== Table A ==  == Table B ==  == Table result == 
Name ,Age   Name ,Sex   Name ,Age ,Sex 
Bob ,37  +  Bob ,Male  => Bob ,37 ,Male 
Steve ,12   Steve ,Male   Steve,12 ,Male 
Kate , 7         Kate , 7 , 
        Sara ,Female  Sara , ,Female 

so come fare questo con un database SQL, ma non ho mai fatto con "Excel" o "OpenOffice.org Calc"

Suggerimenti?

risposta

28

In Excel, vlookup può fare parte di ciò che stai chiedendo. In particolare, è possibile utilizzare vlookup per eseguire un join esterno sinistro o destro, ma non un join esterno completo (come il risultato della tabella).

Per fare un join esterno per il vostro esempio di cui sopra, aggiungere il seguente alla C2 di "Tabella B" (o copiare "Tabella B" e poi fare questo):

=vlookup(
    a2, # the cell value from the current table to look up in the other table 
    table_a!$1:$174832718, # the other table 
          # don't manually type this--select the entire 
          # other table while the cursor is editing this 
          # cell, then add the "$"s--Excel doesn't 
          # automatically add them 
          # (the syntax here is for different sheets in 
          # the same file, but Excel will fill this in 
          # correctly for different files as well) 
    2, # the column to get from the other table (A=1, B=2, etc.) 
    FALSE) # FALSE=only get exact matches TRUE=find approx. matches if no exact match 

Si dovrebbe quindi essere in grado per espanderlo per gestire più righe e più colonne importate.

+1

per eseguire un join esterno completo è possibile eseguire l'operazione CERCA.VERT in entrambe le direzioni, quindi unire la tabella 1 nella tabella 2 e la tabella 2 nella tabella 1. Quindi con l'aiuto di una macro o manualmente (copia incolla) unire entrambe le tabelle in una singola tabella e utilizzare la funzione di rimozione dei duplicati nella tabella risultante. – Jan

+0

solo per menzionare che la prima variabile (a2 nel suo caso) deve essere nella prima colonna affinché vlookup funzioni. –

6

In Excel, si utilizza VLOOKUP per quello.
Si supponga di avere i dati nella tabella A elencati nelle colonne A e B in Excel.
E i dati nella lista tabella B in colonne E ed F.
Ora, andare alla prima riga nella colonna C e immettere:

=VLOOKUP(A:A,E:F,2,FALSE) 

Questo dice per cercare di abbinare colonna A con la colonna E, e prendi quello che c'è nella seconda colonna vicino a dove l'abbiamo trovato e posizionalo nella colonna C.
Ora riempire automaticamente il resto delle righe nella colonna C per far corrispondere il resto dei dati.

2

Se è possibile utilizzare Excel, v'è una query da Excel funzione File:

  • definire il nome per la tabella primaria - tabella A (scheda Formule -> Definisci nome)
  • definire il nome per la tabella secondaria - Tabella B
  • Vai alla scheda dati, seleziona "da altre origini", e dal menu a discesa, selezionare "da Microsoft Query"
  • selezionare il file CSV e confermare che si desidera unire le colonne manualmente
  • in la seguente finestra "Query from Excel Files", trascina & rilascia la colonna Nome della Tabella A nella colonna Nome della Tabella B - verrà creato un collegamento tra queste colonne
  • Vai al menu File, fai clic su "Restituisci dati a MS Office Excel", una finestra di dialogo Importa dati apparirà
  • Selezionare il foglio in cui si desidera i dati corrispondenti da importare
  • Fare clic su OK - si dovrebbe vedere i dati abbinati con colonne da entrambe le tabelle

Or se non ti dispiace caricare i tuoi file CSV su un servizio online, puoi usare ad esempio http://www.exmerg.com/data-merging e unirti alla spre fogli di lavoro utilizzando il trascinamento & di rilascio (Disclaimer: I am author of the tool).

Spero che questo aiuti.

Problemi correlati