2014-09-04 19 views
16

Ho lavorato su un problema di Excel, che ho bisogno di trovare una risposta per spiegarlo di seguito.Unisci due tabelle Excel In base ai dati corrispondenti nelle colonne

ho Table01 con le colonne:

  • gruppo Numero
  • Nome
  • Prezzo

ho Table02 con le colonne:

  • Gruppo No
  • Città
  • Codice

ho fusi due tavole di Table01 & Table02 come mostrato nella Image03, ma senza ordine.

Ma, come si vede il gruppo Nessuna colonna è simile in entrambe le tabelle.

Quello che mi serve è ottenere le righe corrispondenti di Table01 & 02 considerando la colonna 'Group No'.

Il risultato finale è da considerarsi come l'immagine finale.

C'è un modo per farlo con le funzioni di Excel?

The Image

Thank You!

+0

convertire entrambi in tabelle e utilizzare le funzioni di corrispondenza e indice. –

risposta

27

Mettere il tavolo nella seconda immagine sopra Sheet2, colonne da F.

In Foglio1, cella D2 utilizzare la formula

=iferror(vlookup($A2,Sheet2!$D$1:$F$100,column(A1),false),"") 

copia attraverso e giù.

Modifica: ecco un'immagine. I dati sono in due fogli. Sul Foglio1, immettere la formula nella cella D2. Quindi copia la formula su F2 e poi giù tutte le righe di cui hai bisogno.

enter image description here

+0

Grazie per la risposta Ma puoi spiegare questo un po 'di più @teylyn –

+0

a quale cella dovrei scrivere questa funzione @teylyn –

+5

Leggere per favore. Non posso aiutarti se non leggi. – teylyn

9

risposta di Teylyn lavorato molto per me, ma ho dovuto modificare un po 'per ottenere risultati corretti. Voglio fornire una spiegazione estesa per chiunque ne abbia bisogno.

mia messa a punto è stata la seguente:

  • Foglio1: i dati completi del 2014
  • Foglio2: righe aggiornate per il 2015 in A1: D50, filtrate per colonna
  • Foglio3: filari fusa
  • I miei dati non hanno una riga di intestazione

Ho inserito la seguente formula nella cella A1 di Sheet3:

=iferror(vlookup(Sheet1!A$1;Sheet2!$A$1:$D$50;column(A1);false);Sheet1!A1) 

Leggere come segue: Prendere il valore della prima colonna in Foglio1 (dati precedenti). Cerca in Sheet2 (righe aggiornate). Se presente, emettere il valore dalla colonna indicata in Sheet2. In caso di errore, emettere il valore per la colonna corrente di Sheet1.

Note:

  • Nella mia versione della formula, ";" è usato come separatore di parametri invece di ",". Questo perché mi trovo in Europa e usiamo il "," come separatore decimale. Modificare ";" torna a "," se vivi in ​​un paese in cui "." è il separatore decimale.

  • A $ 1: significa sempre prendere la colonna 1 quando si copia la formula in una cella in una colonna diversa. $ A $ 1 significa: prendere sempre la cella esatta A1, anche quando si copia la formula in una riga o colonna diversa.

Dopo aver incollato la formula in A1, ho esteso l'intervallo alle colonne B, C, ecc., Fino a raggiungere l'intera larghezza della tabella. A causa del $ -signs utilizzato, questo dà la seguente formula di in celle B1, C1, ecc .:

=IFERROR(VLOOKUP('Sheet1'!$A1;'Sheet2'!$A$1:$D$50;COLUMN(B1);FALSE);'Sheet1'!B1) 
=IFERROR(VLOOKUP('Sheet1'!$A1;'Sheet2'!$A$1:$D$50;COLUMN(C1);FALSE);'Sheet1'!C1) 

e così via. Si noti che la ricerca viene ancora eseguita nella prima colonna. Questo perché VLOOKUP richiede che i dati di ricerca vengano ordinati nella colonna in cui viene eseguita la ricerca. La colonna di output è tuttavia la colonna in cui viene incollata la formula.

Successivamente, selezionare un rettangolo nel Foglio 3 partendo da A1 e con le dimensioni dei dati in Foglio1 (stesso numero di righe e colonne). Premi Ctrl-D per copiare le formule della prima riga in tutte le celle selezionate.

celle A2, A3, ecc otterranno queste formule:

=IFERROR(VLOOKUP('Sheet1'!$A2;'Sheet2'!$A$1:$D$50;COLUMN(A2);FALSE);'Sheet1'!A2) 
=IFERROR(VLOOKUP('Sheet1'!$A3;'Sheet2'!$A$1:$D$50;COLUMN(A3);FALSE);'Sheet1'!A3) 

causa dell'uso di $ -signs, l'area di ricerca è costante, ma i dati di ingresso viene utilizzato dalla riga corrente.