2012-04-17 11 views
5

Sto provando a confrontare la colonna a nel Foglio 1 con la colonna a nel Foglio 2, quindi copio i valori corrispondenti nella colonna b dal foglio 1 alla colonna b nel Foglio 2 (dove la colonna corrisponde a un valore). Ho cercato di leggere su come farlo, ma non sono sicuro se dovrei provare a creare una macro, o se c'è un modo più semplice per farlo, forse VLOOKUP o MATCH? Non ho davvero familiarità con il modo in cui funzionano queste funzioni.Come confrontare due colonne in Excel (da fogli diversi) e copiare i valori da una colonna corrispondente se le prime due colonne corrispondono?

Inoltre, se si fa la differenza, ci saranno ripetuti valori nella colonna b del Foglio 2.

Foglio 1

12AT8001 1 
12AT8002 2 
12AT8003 3 
12AT8004 4 
12AT8005 5 
12AT8006 6 

Foglio 2

12AT8001 
12AT8001 
12AT8001 
12AT8001 
12AT8001 
12AT8002 
12AT8002 
12AT8002 
12AT8002 
12AT8002 
12AT8003 
12AT8003 
12AT8003 
12AT8003 
12AT8003 

risposta

5

Vlookup è buono se i valori di riferimento (colonna A, foglio 1) sono in ordine ascendente. Un'altra opzione è Index e Match, che può essere utilizzato non importa l'ordine (Fino a quando i valori nella colonna A, foglio 1 sono unici)

Questo è ciò che si dovrebbe mettere in colonna B sul foglio 2

=INDEX(Sheet1!A$1:B$6,MATCH(A1,Sheet1!A$1:A$6),2) 

L'impostazione Sheet1!A$1:B$6 e Sheet1!A$1:A$6 come intervalli nominati lo rende un po 'più facile da usare.

+0

Quando ho usato quella formula sul sottoinsieme di dati (che ho usato come esempio per la questione) ha funzionato. Tuttavia, quando l'ho provato sul set completo di dati (600 righe per le righe sheet1 e 2994 per sheet2) mi ha dato l'errore # N/D. Ho aggiornato la formula per leggere: = INDICE (Foglio1! A $ 1: B $ 600, MATCH (A1, Foglio1! A $ 1: A $ 600), 2). – kmcamara

+0

Quindi ho provato con le 600 righe complete su sheet1, ma lo ho mantenuto nello stesso sottoinsieme di test per sheet2 che ho utilizzato nell'esempio. Usando la stessa formula = INDICE (Foglio1! A $ 1: B $ 600, MATCH (A1, Foglio1! A $ 1: A $ 600), 2), ha restituito un numero apparentemente arbitrario di 276 per tutte le righe. – kmcamara

+0

Forse non funziona perché l'id nel set completo di dati per sheet2 non è nello stesso ordine di sheet1 (come se fossero nell'esempio)? Tutti quegli id ​​sono confusi nel set completo. . . ed è per questo che ho bisogno di qualcosa più veloce che abbinarli a mano. A proposito, tutti i valori nella colonna A di sheet1 sono unici. Qualche idea sul motivo per cui non funzionerà sul set completo o su qualcos'altro da provare? – kmcamara

0

Creare una tabella di verità e utilizzare SUMPRODUCT per ottenere i valori. Copia questo nella cella B1 su Sheet2 e copia quanto necessario:
=SUMPRODUCT(--($A1 = Sheet1!$A:$A), Sheet1!$B:$B)
la parte che crea la tabella di verità è:
--($A1 = Sheet1!$A:$A)
Questo restituisce un array di 0 e di 1. 1 quando i valori corrispondono e uno 0 quando non lo fanno. Quindi la virgola dopo farà fondamentalmente quella che io chiamo moltiplicazione di matrice "divertente" e restituirà il risultato. Forse ho frainteso la tua domanda, ci sono dei valori duplicati nella Colonna A di Sheet1?

+0

Non sto seguendo la tua soluzione :(ma no non ci sono duplicati nella colonna A di Sheet1. – kmcamara

+0

Prova a basta copiare e incollare la prima formula che ti ho dato nella cella B1 di Sheet2 e riempire fino a dove ti serve.Per supponendo che i tuoi fogli di lavoro siano impostati come hai citato nel tuo post dovrebbe dare il valore corretto. In pratica è moltiplicando 1 * il valore in colonna B del Foglio 1 ogni volta che la colonna A del Foglio 1 corrisponde al valore nella Colonna A di S heet 2. – deusxmach1na

-1

Prova:

sheet 2 a1 =vlookup(sheet2a1,sheet1$a$1:$b$6,2) 

Poi trascinarlo verso il basso.

Dovrebbe funzionare.

3

Come ha scoperto kmcamara, questo è esattamente il tipo di problema che VLOOKUP è destinato a risolvere, e l'uso di vlookup è probabilmente il più semplice dei modi alternativi per portare a termine il lavoro.

Oltre ai tre parametri per lookup_value, table_range da cercare e column_index per i valori restituiti, VLOOKUP accetta un quarto argomento opzionale che la documentazione di Excel chiama "range_lookup".

Espansione sulla spiegazione deathApril, se questo argomento è impostato su TRUE (o 1) o omesso, l'intervallo di tabelle deve essere ordinato in ordine crescente dei valori nella prima colonna dell'intervallo affinché la funzione restituisca ciò che tipicamente essere inteso come il valore "corretto". Con questo comportamento predefinito, la funzione restituirà un valore basato su una corrispondenza esatta, se ne viene trovata una, o una corrispondenza approssimativa se non viene trovata una corrispondenza esatta.

Se la corrispondenza è approssimativa, il valore restituito dalla funzione sarà basato sul valore successivo più grande che è inferiore al valore di ricerca.Ad esempio, se "12AT8003" mancava dalla tabella del Foglio 1, le formule di ricerca per quel valore nel Foglio 2 restituire "2", poiché "12AT8002" è il valore più grande nella colonna di ricerca dell'intervallo di tabella che è meno di "12AT8003". (Il comportamento predefinito di VLOOKUP ha perfettamente senso se, ad esempio, l'obiettivo è cercare i tassi in una tabella delle imposte.)

Tuttavia, se il quarto argomento è impostato su FALSE (o 0), VLOOKUP restituisce un look-up valore solo se c'è una corrispondenza esatta e un valore di errore di # N/A se non c'è. Ora è prassi abituale avvolgere un VLOOKUP esatto in una funzione IFERROR per catturare la non corrispondenza con garbo. Prima dell'introduzione di IFERROR, non è stata verificata alcuna corrispondenza con una funzione IF utilizzando la formula VLOOKUP una volta per verificare se vi era una corrispondenza e una volta per restituire il valore di corrispondenza effettivo.

Anche se inizialmente più difficile da padroneggiare, deusxmach1na soluzione proposta è una variazione su un potente set di alternative per vlookup che può essere utilizzato per restituire i valori per una colonna o di un elenco per il sinistra della colonna di ricerca, ampliato per gestire i casi dove è necessaria una corrispondenza esatta su più di un criterio o modificata per incorporare OR e le condizioni di corrispondenza AND tra più criteri.

soluzione scelta Ripetendo di kcamara, la formula CERCA.VERT per questo problema potrebbe essere:

=VLOOKUP(A1,Sheet1!A$1:B$600,2,FALSE) 
Problemi correlati