Jos mietit, kuinka verrata kahta tietosaraketta, joissa on miljoonia rivejä, ja poimia ainutlaatuiset arvot molemmista sarakkeista, sinun kannattaa lukea tämä artikkeli. Käytämme VBA -koodia kahden datasarakkeen vertaamiseen ja erojen näyttämiseen kahdessa seuraavassa sarakkeessa.
Kysymys: Sarakkeissa A ja B on useita arvoja. Haluan, että makro tarkistaa yli 40 k riviä dataa molemmista sarakkeista ja purkaa sitten yksilöllisten merkintöjen luettelon kustakin sarakkeesta seuraavaan sarakkeeseen eli sarakkeisiin C & D vastaavasti. Tässä esimerkissä otan vain 40 riviä näytetietoja.
Alkuperäinen kysymys löytyy täältä
Seuraavassa on tilannekuva tiedoista:
Kahden sarakkeen luettelon vertaamiseksi meidän on suoritettava seuraavat vaiheet VB -editorin käynnistämiseksi:
- Napsauta Kehittäjä -välilehteä
- Valitse koodiryhmästä Visual Basic
- Kopioi alla oleva koodi vakiomoduuliin
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). Loppu (xlUp) .Siirto (1) = rngSolun loppu, jos seuraava jokaiselle rng -solun alueelle ("B2: B40") Jos laskentataulukkofunktio.Lask.Jos (alue ("A2: A40"), rngCell) = 0 Sitten alue ("D") & Rivid.Count) .End (xlUp) .Offset (1) = rngSolun loppu, jos seuraava loppu
- Yllä oleva makro on valmis toimimaan; joko voimme painaa F5 -näppäintä -jos olet parhaillaan Visual Basic Editor -näytössä -tai voimme käyttää pikanäppäimiä “ALT + F8”, valitse makro ja napsauta suorituspainiketta
- Sarakkeiden A & B ainutlaatuinen luettelo luodaan automaattisesti sarakkeisiin C & D
Koodin selitys:
Yllä olevassa koodissa käytämme IF -toimintoa yhdessä For -silmukan kanssa tuloksen saamiseksi.
- Julistamme Dim rngCell alueeksi; rngCellin ilmoittaminen alueeksi on, että haluamme antaa näytealueen "A2: A40" tietyllä nimellä, esim. "rngCell" esimerkissämme
- Jokaiselle rngCell In Range -alueelle ("A2: A40"); tarkistamme jokaisen "rngCell" -solun ehdolla
- Jos WorksheetFunction.CountIf (alue ("B2: B40"), rngCell) = 0 Sitten; tämä koodirivi käyttää COUNTIF VBA -toimintoa ehtoalueen B2 tarkistamiseen: B40 kriteereillä rngCell on nolla, sitten sarakkeessa C rngCelliin tallennettu arvo tallennetaan
- Samoin suoritamme jokaiselle silmukalle sarakkeelle B ja poimimme sarakkeen D ainutlaatuiset arvot
Johtopäätös: Voimme saada ainutlaatuisen luettelon tekstistä tai arvoista kustakin sarakkeesta; sarakkeen C otsikon nimi (Tulokset - on luettelossa 1 mutta ei luettelossa 2) ja sarake D (tulokset - on luettelossa 2 mutta ei luettelossa 1). Jos meillä on samanlainen vaatimus, mutta sarakkeiden määrä on enemmän kuin kaksi, meidän on muokattava koodia, jotta saamme tuloksen.
Jos pidit blogistamme, jaa se ystävillesi Facebookissa. Voit myös seurata meitä Twitterissä ja Facebookissa.
Haluaisimme kuulla sinusta, kerro meille, kuinka voimme parantaa, täydentää tai innovoida työtämme ja parantaa sitä sinulle. Kirjoita meille osoitteeseen sähköpostisivusto