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.