În cazul în care vă întrebați cum să comparați 2 coloane de date cu rânduri în milioane și să extrageți valorile unice dintre ambele coloane, atunci ar trebui să citiți acest articol. Vom folosi codul VBA pentru a compara două coloane de date și vom arăta diferența în următoarele două coloane.
Întrebare: Există mai multe valori care există în coloanele A și B. Vreau ca o macrocomandă să verifice mai mult de 40 k rânduri de date în ambele coloane și apoi să extragă lista intrărilor unice din fiecare coloană în coloana următoare, adică coloanele C Respectiv D. În acest exemplu, iau doar 40 de rânduri de date eșantion.
Puteți găsi întrebarea originală aici
Urmează instantaneul datelor:
Pentru a compara lista celor două coloane, trebuie să urmăm pașii de mai jos pentru a lansa editorul VB:
- Faceți clic pe fila Dezvoltator
- Din grupul de coduri, selectați Visual Basic
- Copiați codul de mai jos în modulul standard
Sub PullUniques () Dim rngCell as Range for Each 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 pentru fiecare 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
- Macro-ul de mai sus este setat să ruleze; fie putem apăsa tasta F5 -dacă vă aflați în prezent în ecranul Visual Basic Editor -sau putem folosi tastele de comandă rapidă „ALT + F8”, selectați macrocomanda dvs. și faceți clic pe butonul Executare
- Lista unică din coloanele A și B va fi generată automat în coloanele C și D
Explicatie cod:
În codul de mai sus, vom folosi funcția IF împreună cu bucla For pentru a obține rezultatul.
- Declarăm Dim rngCell ca Range; scopul declarării rngCell ca Range este vrem să atribuim intervalul de probă „A2: A40” cu un nume specific, adică „rngCell” în exemplul nostru
- Pentru fiecare rngCell In Range ("A2: A40"); vom verifica pentru fiecare celulă din „rngCell” cu o condiție
- Dacă WorksheetFunction.CountIf (Range ("B2: B40"), rngCell) = 0 Atunci; această linie de cod folosește funcția COUNTIF VBA pentru a verifica gama de criterii B2: B40 cu criteriile rngCell este egală cu zero, apoi în coloana C, valoarea stocată în rngCell va fi salvată
- În mod similar, vom rula Pentru fiecare buclă pentru coloana B și vom extrage valorile unice din coloana D.
Concluzie: Putem obține lista unică de text sau valori din fiecare coloană; numele antetului coloanei C (Rezultate - Exista in Lista 1 dar nu in Lista 2) & coloana D (Rezultate - Exista in Lista 2 dar nu in Lista 1). În cazul în care avem o cerință similară, dar numărul de coloane este mai mare de două, atunci trebuie să modificăm codul pentru a obține rezultatul.
Dacă ți-au plăcut blogurile noastre, împărtășește-le prietenilor tăi de pe Facebook. Și, de asemenea, ne puteți urmări pe Twitter și Facebook.
Ne-ar plăcea să aflăm de la dvs., să ne anunțați cum putem îmbunătăți, completa sau inova munca noastră și să o îmbunătățim. Scrie-ne la site de e-mail