Confronta 2 colonne tramite VBA in Microsoft Excel

Anonim

Nel caso ti stia chiedendo come confrontare 2 colonne di dati con righe in milioni ed estrarre i valori univoci tra entrambe le colonne, allora dovresti leggere questo articolo. Useremo il codice VBA per confrontare due colonne di dati e mostrare la differenza nelle due colonne successive.

Domanda: Esistono più valori nelle colonne A e B. Voglio che una macro controlli più di 40 k righe di dati in entrambe le colonne e quindi estragga l'elenco di voci univoche da ciascuna colonna nella colonna successiva, ad esempio le colonne C & D rispettivamente. In questo esempio, sto prendendo solo 40 righe di dati di esempio.

Puoi trovare la domanda originale qui
Di seguito lo snapshot dei dati:

Per confrontare l'elenco di due colonne, dobbiamo seguire i passaggi seguenti per avviare l'editor VB:

  • Fare clic sulla scheda Sviluppatore
  • Dal gruppo Codice seleziona Visual Basic

  • Copia il codice sottostante nel modulo standard
 Sub PullUniques() Dim rngCell As Range For Every rngCell In Range("A2:A40") If WorksheetFunction.CountIf(Range("B2:B40"), rngCell) = 0 Then Range("C" & Rows.Count). End(xlUp).Offset(1) = rngCell End If Next Per ogni rngCell In Range("B2:B40") If WorksheetFunction.CountIf(Range("A2:A40"), rngCell) = 0 Then Range("D" & Rows.Count).End(xlUp).Offset(1) = rngCell End If Next End Sub 

  • La macro precedente è pronta per l'esecuzione; o possiamo premere il tasto F5 -se sei attualmente nella schermata dell'editor di Visual Basic -oppure possiamo usare i tasti di scelta rapida "ALT + F8", seleziona la tua macro e fai clic sul pulsante Esegui

  • L'elenco univoco dalle colonne A e B verrà generato automaticamente nelle colonne C e D

Spiegazione del codice:

Nel codice sopra, useremo la funzione IF insieme al ciclo For per ottenere il risultato.

  • Dichiariamo Dim rngCell As Range; lo scopo di dichiarare rngCell As Range è che vogliamo assegnare l'intervallo di esempio "A2: A40" con un nome specifico, ad esempio "rngCell" nel nostro esempio
  • Per ogni rngCell nell'intervallo ("A2: A40"); controlleremo per ogni cella in "rngCell" con una condizione
  • If WorksheetFunction.CountIf(Range("B2:B40"), rngCell) = 0 Then; questa riga di codice utilizza la funzione COUNTIF VBA per controllare l'intervallo di criteri B2: B40 con i criteri rngCell è uguale a zero, quindi nella colonna C verrà salvato il valore memorizzato in rngCell
  • Allo stesso modo, eseguiremo For Each Loop per la colonna B ed estrarremo i valori univoci nella colonna D

Conclusione: Possiamo ottenere l'elenco univoco di testo o valori da ciascuna colonna; il nome dell'intestazione della colonna C (Risultati - Esiste nell'Elenco 1 ma non nell'Elenco 2) e la colonna D (Risultati - Esiste nell'Elenco 2 ma non nell'Elenco 1). Nel caso in cui abbiamo requisiti simili ma il numero di colonne è superiore a due, è necessario modificare il codice per ottenere il risultato.

Se ti è piaciuto il nostro blog, condividilo con i tuoi amici su Facebook. E puoi anche seguirci su Twitter e Facebook.
Ci piacerebbe avere tue notizie, facci sapere come possiamo migliorare, completare o innovare il nostro lavoro e renderlo migliore per te. Scrivici a sito di posta elettronica