Excel 2010 - Come confrontare le colonne? [chiuso]


-2

Ho 2 colonne (A & amp; B) con oltre 16k righe di dati in ogni colonna.

Colonna A ha 80 righe in più rispetto alla colonna B. Entrambi dovrebbero essere lo stesso numero di righe.

Come faccio a confrontare le due colonne per vedere cosa è caduto sulla colonna B? La colonna B avrà nomi che non sono nella colonna A. Voglio confrontare la colonna A per garantire che tutti i nomi siano nella colonna B.

Esempio:

--------------------------------------------
| Column A           |     Column B        |
--------------------------------------------
| Abdeljawa,Mohammed | ABDELJAWA MOHAMMED  |
| Abdella,Georgette  | ABDELLA GEORGETTE   |
| Abdul,Moiz M       | ABDELLA ZIAD        |
| Abdullahi,Abukar   | ABDUL MOIZ MOSHEEN  |
--------------------------------------------

1
1) Si suppone che le due colonne abbiano lo stesso numero di righe. Ma se B contiene nomi non in A, non tutti i nomi A possono essere in B anche se non mancano 80 righe. Gran parte della tua domanda sembra complicare eccessivamente la distrazione. 2) Anche i nomi corrispondenti non corrispondono necessariamente, al di là del caso e della punteggiatura. Abdul, Moiz M non è identico al corretto caso corretto, Abdul Moiz Mosheen. Non descrivi la gamma potenziale di differenze, o se solo il nome A può essere una versione abbreviata del nome B. Quindi non puoi usare una semplice ricerca.
fixer1234

Risposte:


1

Risposta facile:

Nella cella C1 inserisci la formula:

=VLOOKUP(A1,B:B,1,FALSE)

e trascinalo verso il basso nella colonna C fino alla fine dei dati nella colonna B.

In questo modo stai confrontando ogni valore in colonna B per verificare se sono in colonna A (cercando un esatto corrisponde per valori).


Scavando più a fondo...

Sulla base dei dati di esempio che hai fornito, sembra lo stesso nome nella colonna A potrebbe apparire in modo diverso nella colonna B.

Le tre cose che ho notato sono:

  • Capitalizzazione (tutto MAIUSCOLA rispetto al caso di sentenza)
  • Punteggiatura (aggiunta di una virgola al posto di uno spazio)
  • Ordine (come FirstName [spazio] LastName vs LastName, FirstName [spazio] Iniziale del secondo nome)

Se vuoi anche gestire queste situazioni mentre cerchi la colonna B ha tutto in colonna A, quindi avresti bisogno di essere un po 'più coinvolto.

Potrebbe essere che si desidera prendere in considerazione solo alcune di queste incoerenze (se ce ne sono) in base al numero di occorrenze di ciascuna di esse.

Tratterò separatamente ciascuna delle incoerenze nei dati. A seconda di quali hai bisogno di prendere in considerazione, puoi annidarli secondo necessità.

capitalizzazione: Excel di VLOOKUP la funzione è case insensitive. Quindi questo non dovrebbe essere un problema se stai usando VLOOKUP cercare i dati. Ma se si utilizza una funzione diversa, la maiuscola è facile da gestire. Quello che ti serve per convertirlo tutti dei tuoi dati in minuscolo o MAIUSCOLO in modo che sia coerente. (Personalmente preferisco la MAIUSCOLA per motivi che non conosco davvero)

Nota: potresti anche usare il Funzione corretta per convertire tutto in Case corretto, se lo si desidera.

Puoi utilizzare queste funzioni e creare 2 nuove colonne di dati con lettere maiuscole coerenti o puoi usarle all'interno di una formula per convertire i valori al volo.

Punteggiatura: in base all'esempio che hai fornito, c'era un'istanza in cui una in colonna A, i nomi erano separati da una virgola e lo stesso nome era separato da uno spazio. Se ci sono molte di queste istanze, è possibile attenersi a un formato utilizzando il Funzione SOSTITUTO .

Ad esempio se vuoi rimuovere tutte le virgole nella cella A1 e sostituirli con uno spazio, puoi usare:

=SUBSTITUTE(A1,","," ")

Di nuovo simile alla maiuscola, puoi avere 2 nuove colonne con i risultati della sostituzione o puoi usarle anche in qualsiasi altra formula. Questo è come il VLOOKUP la formula sembrerebbe se volessi rimuovere la virgola nella cella A1 e sostituirlo con uno spazio prima di cercarlo nella colonna B:

=VLOOKUP(SUBSTITUTE(A1,","," "),B:B,1,FALSE)

Ordine: se l'ordine con lo stesso nome è diverso nella colonna A e colonna Be ci sono molti esempi di questo tipo, potrebbe essere necessario prendere in considerazione la possibilità di riordinare i nomi prima di cercarli. Questo può diventare molto complesso facilmente così:

  1. Assicurati che ci sia una quantità significativa di dati che devono essere riordinati prima di fare questo.
  2. Assicurati che lo stesso nome sia ordinato diversamente nelle 2 colonne di a coerente modo.
  3. Se ci sono dati come questo tra dati corrispondenti correttamente, fallo solo su dati per i quali non ci sono corrispondenze.

Per riordinare un nome in una cella da Cognome, Nome a Nome Cognome, vedi sotto.

Preso da Come posso passare una stringa da "lastName, firstName" a "firstName LastName"? :

Se il primo nome è in A2 prova questa formula in B2 copiata

= MID (A2 & amp; "" & amp; A2, TROVA ("", A2) + 1, LEN (A2) -1)

Se si desidera cambiare l'ordine dei nomi al contrario e / o considerare l'iniziale centrale durante il riordino, è possibile utilizzare le funzioni SINISTRA , DESTRA , MID , LEN , TROVA come necessario per farlo anche

Un'ultima cosa, a seconda di come i dati sono arrivati ​​al file Excel, tu potrebbe bisogno di eseguire altro funzioni di pulizia dei dati ad esempio PULITO e TRIM .


0

Ci sono molti modi, eccone uno:

Inserisci nella colonna C una formula che prende ciascun valore della colonna A e lo cerca nella colonna B; se non trovato, segnalalo. Quindi metti un filtro sulla bandiera; in questo modo puoi facilmente vedere le differenze.

La formula sarà simile a (Cella C1):
=VLOOKUP(A1,B$1:B$20000,1,FALSE)
Questo metterà il valore da A a C se esiste anche in B e #ERROR altrimenti.

Quindi copia la formula in basso e filtra C per #ERROR, vedrai tutti i valori A mancanti da B.

Se hai - come nei tuoi esempi - piccole differenze nella tua ortografia, non è abbastanza; devi usare UPPER(A1) invece di A1 per farli corrispondere, e se hai quelle virgole anche lì, è necessario aggiungere una sostituzione ',' da niente.


Questo darà falsi positivi poiché ci sono più differenze rispetto alla capitalizzazione e alla punteggiatura, come Abdul, Moiz M non è identico al corretto caso corretto, Abdul Moiz Mosheen.
fixer1234

0

La questione è piuttosto complicata dato che la Colonna A ha delle virgole, mentre la Colonna B no, e la Colonna B è in maiuscolo mentre la Colonna A non lo è. Quello che vorrei fare personalmente è caricare ogni colonna in file di testo separati, e quindi usare l'utilità Linux sed per sbarazzarsi della virgola e cambiare in maiuscolo nel primo file. Quindi potrei semplicemente eseguire l'utility diff.


Non appena raggiungi la prima mancata corrispondenza, tutto ciò che segue non corrisponderà. Quindi potrebbe essere che praticamente l'intera lista si trova nell'utilità diff. Dato che non stai lavorando con i dati di origine, non puoi correggere una riga e vedere l'impatto. È necessario ripetere l'intero processo per trovare la successiva discrepanza effettiva. Questo sarebbe un processo estremamente inefficiente che sarebbe notevolmente migliorato lavorando direttamente con i dati di origine.
fixer1234

0

Questo sarà un po 'difficile dato che i nomi non sono nello stesso formato. Un modo per farlo è fare una colonna a destra che faccia un confronto, iniziando in d2

  • = IF (UPPER (TRIM (LEFT (A2,5))) = UPPER (TRIM (LEFT (B2,5))), D3, ROW ())

Ciò che fa è darti la riga del prossimo errore di lettura (il numero della riga si riempie). quando ne trovi uno, correggi o aggiungi uno spazio vuoto nella colonna appropriata

Quindi continua con il prossimo.

Lo scopo di questo approccio potrebbe non essere chiaro. Poiché sappiamo che ci sono meno di 100 problemi attesi, è della giusta dimensione per un rapido & amp; sporco. Trova un problema, passa a quello successivo. ecc. poi fatto. Se il numero di errori previsto era maggiore, sarebbe stato utilizzato un approccio diverso.

Questo approccio utilizza un riciclo invece di risolvere tutto in un unico approccio. Trova 1 problema, correggi il problema 1, quindi vai al problema successivo, quindi successivo, ecc. Fino a quando non viene risolto tutto. L'obiettivo è di entrare rapidamente nella zona giusta. Avendo il numero di riga può passare direttamente al prossimo. se 1205 era il prossimo numero, un ctrl-g per A1205 salta direttamente al prossimo numero. La formula non mostrerà tutti i problemi in modo accurato, poiché una volta che le righe sono fuori 1 rispetto a quelle con più dati, quasi tutti i confronti non avranno esito positivo. Questo è un modo rapido per trovare il tuo primo problema, correggerlo, quindi passare al problema successivo.

Ho il sospetto che l'interrogante abbia più problemi di quanti ne abbia affermato. Ulteriori problemi possono essere trovati usando lo stesso approccio di formula modificando la porzione di test dell'istruzione if.


quale parte non è stata affrontata?
bvaughn

Dire che si rivolge a un pezzo non era veramente preciso. Questo non sembra rispondere alla domanda. L'esempio della domanda mostra due coppie di nomi che corrispondono alle prime cinque lettere, quindi questo approccio avrebbe un'alta probabilità di non riuscire a catturare nomi non corrispondenti. Ripeterà anche le identità delle righe di corrispondenza errata sulla riga di corrispondenza precedente. Non è chiaro che cosa sia la duplicazione del numero di riga nel posto sbagliato.
fixer1234

0

il mio inglese è cattivo, ma spero di elencare qui sotto per aiutare

all'inizio di : il nome nella cella passò a più celle con il divertimento di testo e dati.  esempio Cell1 = Abdul, Moiz M Cell3 = Abdul Cell4 = Moiz Cell5 = M E Cell2 = ABDUL MOIZ MOSHEEN Cell6 = ABDUL Cell7 = MOIZ Cell8 = MOSHEEN

Ti cellule superiori 2,3,4,6,7,8

E con MATCH il divertimento conta il numero di corrispondenze per le celle 2,3,4,6,7,8, e due e più corrispondenze sono un buon risultato con un piccolo errore di probabilità.


0

Puoi usare una formula CERCA.VERT per determinare quali valori di col A non appaiono in col B. Incollare la formula seguente nella prima cella di una colonna vuota e copiarla completamente verso il basso. Se una cella restituisce # N / A, allora il valore col A in quella riga non appare in col B.

Si noti che la colonna B deve essere ordinata in ordine decrescente. Se non si desidera riordinare i dati per qualche motivo, è sufficiente copiarli su un foglio diverso e ordinarli lì.

= VLOOKUP (A1, B: B, 1, FALSE)


1
Questo darà falsi positivi poiché ci sono più differenze rispetto alla capitalizzazione e alla punteggiatura, come Abdul, Moiz M non è identico al corretto caso corretto, Abdul Moiz Mosheen.
fixer1234

Capisco, si. Con il numero dovrebbe essere piccolo, e non c'è modo per qualsiasi funzione in Excel sapere se ... M è lo stesso ragazzo di ... Mosheen. Probabilmente è ancora buono come può essere.
Aganju

Un'altra opzione sarebbe quella di copiare tutto in un'unica colonna, quindi utilizzare gli strumenti duplicati per evidenziare o eliminare tutto ciò che appare due volte.
P Fitz

Questa formula nella revisione attuale della risposta ( =VLOOKUP(A1,B,1,FALSE ) non è corretto. Il 2 ° parametro ( table_array ) non è corretto. Deve essere un intervallo. Ho incluso quello corretto nella mia risposta insieme a possibili funzioni di pulizia dei dati che potrebbero essere utilizzate per superare eventuali incoerenze significative nei dati
thilina R

Buona pesca. Sarò sicuro di sistemare e darti un upvote.
P Fitz
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.