Odstranjevanje podvojenih vrednosti v Excelu VBA

Ta vadnica bo pokazala, kako odstraniti dvojnike z metodo RemoveDuplicates v VBA.

Metoda RemoveDuplicates

Ko so podatki uvoženi ali prilepljeni na Excelov delovni list, lahko pogosto vsebujejo podvojene vrednosti. Morda boste morali očistiti dohodne podatke in odstraniti dvojnike.

Na srečo obstaja enostavna metoda v objektu Range VBA, ki vam to omogoča.

1 Obseg (“A1: C8”). Odstrani Podvojene stolpce: = 1, Glava: = xlDa

Sintaksa je:

RemoveDuplicates ([stolpci], [glava]

  • [Stolpci] - Določite, v katerih stolpcih se preverjajo podvojene vrednosti. Vsi stolpci se zelo ujemajo, da jih lahko štejemo za podvojene.
  • [Glava] - Ali imajo podatki glavo? xlNe (privzeto), xlYes, xlYesNoGuess

Tehnično sta oba parametra neobvezna. Če pa ne podate argumenta Stolpci, se dvojniki ne bodo odstranili.

Privzeta vrednost za glavo je xlNo. Seveda je bolje določiti ta argument, če pa imate vrstico glave, je malo verjetno, da se bo vrstica glave ujemala kot podvojena.

Opombe o uporabi RemoveDuplicates

  • Pred uporabo metode RemoveDuplicates morate podati obseg, ki ga želite uporabiti.
  • Metoda RemoveDuplicates bo odstranila vse vrstice z najdenimi dvojniki, vendar bo ohranila prvotno vrstico z vsemi vrednostmi.
  • Metoda RemoveDuplicates deluje samo v stolpcih in ne v vrsticah, vendar je za odpravo te situacije mogoče zapisati kodo VBA (glej kasneje).

Vzorčni podatki za primere VBA

Za prikaz delovanja vzorčne kode se uporabljajo naslednji vzorčni podatki:

Odstranite podvojene vrstice

Ta koda bo odstranila vse podvojene vrstice samo na podlagi vrednosti v stolpcu A:

123 Sub RemoveDupsEx1 ()Obseg (“A1: C8”). Odstrani Podvojene stolpce: = 1, Glava: = xlDaEnd Sub

Upoštevajte, da smo izrecno opredelili obseg "A1: C8". Namesto tega lahko uporabite UsedRange. UsedRange bo določil zadnjo uporabljeno vrstico in stolpec vaših podatkov in za celotno območje uporabil RemoveDuplicates:

123 Sub RemoveDups_UsedRange ()ActiveSheet.UsedRange.RemoveDuplicates Stolpci: = 1, Glava: = xlDaEnd Sub

UsedRange je neverjetno uporaben, saj odpravlja potrebo po izrecni določitvi obsega.

Po zagonu te kode bo vaš delovni list zdaj videti tako:

Upoštevajte, da je bil podatek „jabolka“, ki je bil prej v vrstici 5, podan samo v stolpcu A (stolpec 1). Vendar je količina (stolpec 2) drugačna.

Če želite odstraniti podvojene podatke, jih primerjamo z več stolpci z uporabo metode Array.

Odstranite podvojene podatke, če primerjate več stolpcev

123 Sub RemoveDups_MultColumns ()ActiveSheet.UsedRange.RemoveDuplicates Stolpci: = Array (1, 2), Header: = xlDaEnd Sub

Niz pove VBA, naj primerja podatke z uporabo stolpcev 1 in 2 (A in B).

Stolpci v matriki niso nujno v zaporedju.

123 Sub SimpleExample ()ActiveSheet.UsedRange.RemoveDuplicates Stolpci: = Array (3, 1), Header: = xlDaEnd Sub

V tem primeru se stolpca 1 in 3 uporabljata za podvojeno primerjavo.

Ta primer kode uporablja vse tri stolpce za preverjanje dvojnikov:

123 Sub SimpleExample ()ActiveSheet.UsedRange.RemoveDuplicates Stolpci: = Array (1, 2, 3), Header: = xlDaEnd Sub

Odstranjevanje podvojenih vrstic iz tabele

RemoveDuplicates lahko na popolnoma enak način uporabite tudi v Excelovi tabeli. Vendar je sintaksa nekoliko drugačna.

1234 Sub SimpleExample ()ActiveSheet.ListObjects ("Tabela1"). DataBodyRange.RemoveDuplicates stolpci: = Array (1, 3), _Glava: = xlDaEnd Sub

S tem boste odstranili dvojnike v tabeli na podlagi stolpcev 1 in 3 (A in C). Vendar pa ne popravi barvnega oblikovanja tabele, na dnu tabele pa boste videli barvne prazne vrstice.

Odstranite podvojene podatke iz nizov

Če morate odstraniti podvojene vrednosti iz matrike, seveda lahko matriko iznesete v Excel, uporabite metodo RemoveDuplicates in znova uvozite matriko.

Napisali pa smo tudi postopek VBA za odstranitev dvojnikov iz matrike.

Odstranjevanje podvojenih podatkovnih nizov z uporabo VBA

Metoda RemoveDuplicates deluje samo na stolpcih podatkov, vendar z nekaj razmišljanja "izven škatle" lahko ustvarite postopek VBA za obravnavo vrstic podatkov.

Recimo, da so na vašem delovnem listu vaši podatki videti tako:

V stolpcih B in E imate enake dvojnike, vendar jih ne morete odstraniti z metodo RemoveDuplicates.

Odgovor je, da uporabite VBA za ustvarjanje dodatnega delovnega lista, kopirate podatke vanj in jih prenesete v stolpce, odstranite podvojene podatke in jih nato kopirate nazaj, tako da jih prenesete v vrstice.

12345678910111213141516171819202122232425262728293031323334353637 Sub DuplicatesInRows ()"Izklopite posodabljanje zaslona in opozorila - želimo, da koda deluje brez težav, ne da bi to videl uporabnik'kaj se dogajaApplication.ScreenUpdating = NapačnoApplication.DisplayAlerts = Napačno'Dodaj nov delovni listListi. Dodaj po: = ActiveSheet'Pokličite nov delovni list' CopySheet 'ActiveSheet.Name = "Kopiraj list"'Kopirajte podatke iz izvirnega delovnega listaListi ("DataInRows"). UsedRange.Copy'Aktivirajte nov list, ki je bil ustvarjenListi ("CopySheet"). Aktivirajte'Prilepi prenos podatkov tako, da so zdaj v stolpcihActiveSheet.Range ("A1"). PasteSpecial Paste: = xlPasteAll, Delovanje: = xlNone, SkipBlanks: = _False, Transpose: = True„Odstranite dvojnike za stolpca 1 in 3ActiveSheet.UsedRange.RemoveDuplicates stolpci: = matrika (1, 3), glava _: = xlDa"Počistite podatke na izvirnem delovnem listuListi ("DataInRows"). UsedRange.ClearContents'Kopirajte stolpce podatkov z novega ustvarjenega delovnega listaListi ("Copysheet"). UsedRange.Copy'Aktivirajte izvirni listPreglednice ("DataInRows"). Aktivirajte'Prilepi prenesite nepodvojene podatkeActiveSheet.Range ("A1"). PasteSpecial Paste: = xlPasteAll, Delovanje: = xlNone, SkipBlanks: = _False, Transpose: = True„Izbrišite list za kopiranje - ni več potrebnoListi ("Copysheet"). Izbriši'Aktivirajte izvirni listPreglednice ("DataInRows"). Aktivirajte»Vklopite posodobitev zaslona in opozorilaApplication.ScreenUpdating = ResApplication.DisplayAlerts = ResEnd Sub

Ta koda predpostavlja, da so izvirni podatki v vrsticah na delovnem listu, imenovanem "DataInRows"

Po zagonu kode bo vaš delovni list videti tako:

Dvojnik „Jabolka“ v stolpcu E je zdaj odstranjen. Uporabnik je spet v čistem položaju, brez tujih delovnih listov, celoten postopek pa je potekal gladko brez utripanja zaslona ali opozorilnih sporočil.

Vam bo pomagal razvoj spletnega mesta, ki si delijo stran s svojimi prijatelji

wave wave wave wave wave