Uklanjanje dupliciranih vrijednosti u Excelu VBA

Ovaj će vodič pokazati kako ukloniti duplikate pomoću metode RemoveDuplicates u VBA -i.

Metoda RemoveDuplicates

Kad se podaci uvezu ili zalijepe u radni list programa Excel, često mogu sadržavati dvostruke vrijednosti. Možda ćete morati očistiti dolazne podatke i ukloniti duplikate.

Srećom, postoji jednostavna metoda unutar objekta Range VBA koja vam to omogućuje.

1 Raspon (“A1: C8”). RemoveDuplicates Stupci: = 1, Zaglavlje: = xlDa

Sintaksa je:

RemoveDuplicates ([Stupci], [Zaglavlje]

  • [Stupci] - Odredite koji stupci se provjeravaju za duplicirane vrijednosti. Svi stupci se podudaraju kako bi se smatrali duplikatom.
  • [Zaglavlje] - Imaju li podaci zaglavlje? xlNo (zadano), xlYes, xlYesNoGuess

Tehnički, oba parametra su izborna. No, ako ne navedete argument Stupci, duplikati se neće ukloniti.

Zadana vrijednost zaglavlja je xlNo. Naravno da je bolje navesti ovaj argument, ali ako imate redak zaglavlja, malo je vjerojatno da će se red zaglavlja podudarati kao duplikat.

RemoveDuplicates Napomene o upotrebi

  • Prije uporabe metode RemoveDuplicates morate navesti raspon koji ćete koristiti.
  • Metoda RemoveDuplicates uklonit će sve retke s pronađenim duplikatima, ali će zadržati izvorni redak sa svim vrijednostima.
  • Metoda RemoveDuplicates radi samo na stupcima, a ne i na redovima, ali VBA kôd se može napisati kako bi se ispravila ova situacija (vidi kasnije).

Primjeri podataka za primjere VBA

Kako bi se pokazalo kako funkcionira primjer koda, koriste se sljedeći uzorci podataka:

Uklonite duple redove

Ovaj će kôd ukloniti sve dvostruke retke samo na temelju vrijednosti u stupcu A:

123 Sub RemoveDupsEx1 ()Raspon (“A1: C8”). RemoveDuplicates Stupci: = 1, Zaglavlje: = xlDaKraj podm

Uočite da smo izričito definirali raspon “A1: C8”. Umjesto toga možete koristiti UsedRange. UsedRange će odrediti zadnji upotrijebljeni redak i stupac vaših podataka i primijeniti RemoveDuplicates na cijeli raspon:

123 Sub RemoveDups_UsedRange ()ActiveSheet.UsedRange.RemoveDuplicates Stupci: = 1, Zaglavlje: = xlDaKraj podm

UsedRange je nevjerojatno koristan, uklanjajući potrebu da izričito definirate raspon.

Nakon pokretanja ovog koda, vaš će radni list sada izgledati ovako:

Uočite da je, budući da je naveden samo stupac A (stupac 1), duplikat "Jabuke" koji je prethodno bio u 5. retku uklonjen. Međutim, količina (stupac 2) je drugačija.

Za uklanjanje duplikata, uspoređujući više stupaca, možemo ih navesti pomoću metode Array.

Uklonite duplikate uspoređujući više stupaca

123 Sub RemoveDups_MultColumns ()ActiveSheet.UsedRange.RemoveDuplicates Stupci: = Polje (1, 2), Zaglavlje: = xlDaKraj podm

Niz govori VBA -i da usporedi podatke koristeći oba stupca 1 i 2 (A i B).

Stupci u nizu ne moraju biti uzastopni.

123 Podjednostavni primjer ()ActiveSheet.UsedRange.RemoveDuplicates Stupci: = Polje (3, 1), Zaglavlje: = xlDaKraj podm

U ovom primjeru stupci 1 i 3 koriste se za dvostruku usporedbu.

Ovaj primjer koda koristi sva tri stupca za provjeru duplikata:

123 Podjednostavni primjer ()ActiveSheet.UsedRange.RemoveDuplicates Stupci: = Polje (1, 2, 3), Zaglavlje: = xlDaKraj podm

Uklanjanje dupliciranih redova iz tablice

RemoveDuplicates se također može primijeniti na Excel tablicu na potpuno isti način. Međutim, sintaksa je nešto drugačija.

1234 Podjednostavni primjer ()ActiveSheet.ListObjects ("Tablica1"). DataBodyRange.RemoveDuplicates Stupci: = Polje (1, 3), _Zaglavlje: = xlDaKraj podm

Ovo će ukloniti duplikate u tablici na temelju stupaca 1 i 3 (A i C). Međutim, ne popravlja oblikovanje boje u tablici, a pri dnu tablice vidjet ćete prazne redove u boji.

Uklonite duplikate iz niza

Ako trebate ukloniti dvostruke vrijednosti iz niza, naravno da možete ispisati svoj niz u Excel, upotrijebiti metodu RemoveDuplicates i ponovno uvesti niz.

Međutim, napisali smo i postupak VBA za uklanjanje duplikata iz niza.

Uklanjanje duplikata iz reda podataka pomoću VBA

Metoda RemoveDuplicates radi samo na stupcima podataka, ali s nekim "out of the box" razmišljanjem možete stvoriti VBA postupak za rješavanje redaka podataka.

Pretpostavimo da vaši podaci izgledaju ovako na vašem radnom listu:

Imate iste duplikate kao i prije u stupcima B i E, ali ih ne možete ukloniti pomoću metode RemoveDuplicates.

Odgovor je koristiti VBA za stvaranje dodatnog radnog lista, kopiranje podataka u njega transponiranjem u stupce, uklanjanje duplikata, a zatim kopiranje natrag transponiranjem natrag u retke.

12345678910111213141516171819202122232425262728293031323334353637 Sub DuplicatesInRows ()'Isključite ažuriranje zaslona i upozorenja - želimo da kôd radi glatko, a da korisnik to ne vidi'Što se događaApplication.ScreenUpdating = NetačnoApplication.DisplayAlerts = Netačno'Dodajte novi radni listTablice.Dodaj poslije: = ActiveSheet'Nazovite novi radni list' CopySheet 'ActiveSheet.Name = "Kopiraj list"'Kopirajte podatke s izvornog radnog listaTablice ("DataInRows"). UsedRange.Copy'Aktivirajte novi list koji je kreiranTablice ("CopySheet"). Aktivirajte'Zalijepi transponiraj podatke tako da su sada u stupcimaActiveSheet.Range ("A1"). PasteSpecial Paste: = xlPasteAll, Operacija: = xlNone, SkipBlanks: = _Netačno, Transponiraj: = Istina'Uklonite duplikate za stupce 1 i 3ActiveSheet.UsedRange.RemoveDuplicates Stupci: = Polje (1, 3), Zaglavlje _: = xlDa'Obrišite podatke na izvornom radnom listuTablice ("DataInRows"). UsedRange.ClearContents'Kopirajte stupce podataka s novog stvorenog radnog listaListovi ("Copysheet"). UsedRange.Copy'Aktivirajte izvorni listTablice ("DataInRows"). Aktivirajte'Zalijepi transponiraj nedvojbene podatkeActiveSheet.Range ("A1"). PasteSpecial Paste: = xlPasteAll, Operacija: = xlNone, SkipBlanks: = _Netačno, Transponiraj: = Istina'Izbrišite list za kopiranje - više nije potrebnoTablice ("Copysheet"). Izbrišite'Aktivirajte izvorni listTablice ("DataInRows"). Aktivirajte'Ponovo uključite ažuriranje zaslona i upozorenjaApplication.ScreenUpdating = IstinaApplication.DisplayAlerts = IstinaKraj podm

Ovaj kôd pretpostavlja da se izvorni podaci u retcima drže na radnom listu pod nazivom "DataInRows"

Nakon pokretanja koda, vaš će radni list izgledati ovako:

Duplikat „jabuke“ u stupcu E sada je uklonjen. Korisnik se vratio u čist položaj, bez vanjskih radnih listova, a cijeli je postupak prošao glatko bez treperenja zaslona ili poruka upozorenja.

Vi ćete pomoći u razvoju web stranice, dijeljenje stranicu sa svojim prijateljima

wave wave wave wave wave