Võrrelge Microsoft Excelis kahte veergu VBA kaudu

Anonim

Kui soovite teada, kuidas võrrelda kahte miljonite ridadega andmete veergu ja eraldada mõlema veeru ainulaadsed väärtused, peaksite seda artiklit lugema. Kasutame VBA koodi kahe andmeveeru võrdlemiseks ja erinevuse näitamiseks kahes järgmises veerus.

Küsimus: Veergudes A ja B on mitu väärtust. Soovin, et makro kontrolliks mõlemas veerus rohkem kui 40 k andmerida ja seejärel ekstraheeriks igast veerust kordumatute kirjete loendi järgmisesse veergu, st veerud C & D vastavalt. Selles näites võtan ainult 40 rida prooviandmeid.

Originaalse küsimuse leiate siit
Allpool on andmete ülevaade:

Kahe veeru loendi võrdlemiseks peame VB redaktori käivitamiseks toimima järgmiselt.

  • Klõpsake vahekaarti Arendaja
  • Valige koodigrupist Visual Basic

  • Kopeerige allolev kood standardmoodulisse
 Sub PullUniques () Dim rngCell kui vahemik iga vahemiku rngCell ("A2: A40") jaoks Kui töölehtFunction.CountIf (vahemik ("B2: B40"), rngCell) = 0 Siis vahemik ("C" ja ridade arv). End (xlUp) .Offset (1) = rngCell End if Next Iga rngCell In Range ("B2: B40") If WorksheetFunction.CountIf (Vahemik ("A2: A40"), rngCell) = 0 Siis vahemik ("D" & Rows.Count). End (xlUp). Offset (1) = rng Lahtri lõpp, kui järgmine lõpp 

  • Ülaltoodud makro on valmis töötama; kas me võime vajutada klahvi F5 -kui olete praegu Visual Basic Editori ekraanil -või võime kasutada kiirklahve “ALT + F8”, valige oma makro ja klõpsake käivitusnuppu

  • Ainulaadne veergude A ja B loend luuakse automaatselt veergudesse C & D

Koodi selgitus:

Ülaltoodud koodis kasutame tulemuse saamiseks funktsiooni IF koos silmusega For.

  • Kuulutame Dim rngCelli vahemikuks; rngCelli vahemikuks kuulutamise eesmärk on määrata näidisvahemik „A2: A40” kindla nimega, st meie näites „rngCell”
  • Iga rngCell vahemikus ("A2: A40"); kontrollime iga lahtri rngCell tingimustega
  • Kui WorksheetFunction.CountIf (Vahemik ("B2: B40"), rngCell) = 0 Siis; see koodirida kasutab funktsiooni COUNTIF VBA kriteeriumivahemiku B2 kontrollimiseks: B40 kriteeriumiga rngCell võrdub nulliga, seejärel veerus C salvestatakse rngCellis salvestatud väärtus
  • Samamoodi käivitame veeru B iga silmuse jaoks ja ekstraheerime unikaalsed väärtused veerust D

Järeldus: Me saame igast veerust ainulaadse teksti või väärtuste loendi; veeru C päise nimi (Tulemused - on olemas loendis 1, kuid mitte loendis 2) ja veerg D (tulemused - on olemas loendis 2, kuid mitte loendis 1). Kui meil on sarnane nõue, kuid veergude arv on üle kahe, peame tulemuse saamiseks koodi muutma.

Kui teile meeldisid meie ajaveebid, jagage seda oma sõpradega Facebookis. Samuti saate meid jälgida Twitteris ja Facebookis.
Tahaksime sinust kuulda, andke meile teada, kuidas saaksime oma tööd täiustada, täiendada või uuendada ning muuta see teie jaoks paremaks. Kirjuta meile aadressil e -posti sait