VBA täiustatud filter

See õpetus selgitab, kuidas VBA -s kasutada täpsema filtri meetodit

Täiustatud filtreerimine Excelis on väga kasulik suurte andmekoguste käsitlemisel, kui soovite korraga kasutada erinevaid filtreid. Seda saab kasutada ka duplikaatide eemaldamiseks teie andmetest. Enne täiustatud filtri loomist VBA -st peate olema kursis Exceli täpsema filtri loomisega.

Mõelge järgmisele töölehele.

Näete lühidalt, et on duplikaate, mida soovite eemaldada. Konto tüüp on segu säästmisest, tähtajalisest laenust ja tšekist.

Kõigepealt peate täpsema filtri jaoks seadistama kriteeriumide jaotise. Seda saate teha eraldi lehel.

Viitamise hõlbustamiseks olen andnud oma andmelehele nimeks „Andmebaas” ja kriteeriumilehe „Kriteeriumid”.

Täpsem filtri süntaks

Expression.AdvancedFilter Action, CriteriaRange, CopyToRange, kordumatu

  • The Väljendus tähistab vahemiku objekti - ja seda saab määrata vahemikuks (nt vahemik („A1: A50”) - või võib vahemiku määrata muutujale ja seda muutujat saab kasutada.
  • The Tegevus argument on kohustuslik ja see on kas xlFilterInPlace või xlFilterCopy
  • The Kriteeriumide vahemik argument on see, kust saate kriteeriumid filtreerida (meie kriteeriumileht ülal). See on valikuline, kuna näiteks unikaalsete väärtuste filtreerimisel poleks vaja kriteeriume.
  • The CopyToRange argument on koht, kuhu kavatsete filtritulemused paigutada - saate filtreerida oma kohale või kopeerida filtritulemuse teise kohta. See on ka vabatahtlik argument.
  • The Ainulaadne argument on ka valikuline - Tõsi filtreerib ainult unikaalseid kirjeid, Vale on filtreerida kõik kirjed, mis vastavad kriteeriumidele - kui selle välja jätate, on see vaikimisi Vale.

Andmete filtreerimine paigas

Kasutades kriteeriumilehel ülaltoodud kriteeriume - tahame leida kõik kontod, mille tüübid on „Säästud“ ja „Praegused“. Oleme filtreerimine paigas.

123456789 Sub CreateAdvancedFilter ()Dim rngDatabase As RangeDim rngCriteria As Range"määratlege andmebaas ja kriteeriumivahemikudMäära rngDatabase = Sheets ("Andmebaas"). Vahemik ("A1: H50")Määra rngCriteria = Sheets ("Criteria"). Vahemik ("A1: H3")"Filtreerida andmebaasi kasutades kriteeriumidrngDatabase.AdvancedFilter xlFilterInPlace, rngCriteriaEnd Sub

Kood peidab read, mis ei vasta kriteeriumidele.

Ülaltoodud VBA protseduuris ei kaasanud me argumente CopyToRange ega Unique.

Andmete lähtestamine

Enne uue filtri käivitamist peame praeguse filtri tühjendama. See toimib ainult siis, kui olete oma andmed oma kohale filtreerinud.

12345 Alam ClearFilter ()Vea korral Jätka järgmist'lähtestage filter, et kuvada kõik andmedActiveSheet.ShowAllDataEnd Sub

Filtreerimine Unikaalne väärtused

Allolevasse protseduuri olen lisanud argumendi Unikaalne, kuid jätnud CopyToRange argumendi välja. Kui jätate selle argumendi välja, siis teie KÕIK tuleb argumendi kohahoidjaks panna koma

123456789 Ainulaadsed väärtusedFilter1 ()Dim rngDatabase As RangeDim rngCriteria As Range"Määratleda andmebaasi ja kriteeriumid vahemikudMäära rngDatabase = Sheets ("Andmebaas"). Vahemik ("A1: H50")Määra rngCriteria = Sheets ("Criteria"). Vahemik ("A1: H3")filtreerige andmebaas kriteeriumide aluselrngDatabase.AdvancedFilter xlFilterInPlace, rngCriteria ,, TõsiEnd Sub

VÕI peate kasutama nimega argumente, nagu allpool näidatud.

123456789 Ainulaadsed väärtusedFilter2 ()Dim rngDatabase As RangeDim rngCriteria As Range"Määratleda andmebaasi ja kriteeriumid vahemikudMäära rngDatabase = Sheets ("Andmebaas"). Vahemik ("A1: H50")Määra rngCriteria = Sheets ("Criteria"). Vahemik ("A1: H3")filtreerige andmebaas kriteeriumide aluselrngDatabase.AdvancedFilter Action: = xlFilterInPlace, CriteriaRange: = rngCriteria, Unique: = TrueEnd Sub

Mõlemad ülaltoodud koodinäited käitavad sama filtrit, nagu allpool näidatud - ainult unikaalsete väärtustega andmed.

Kasutades CopyTo argument

123456789 Sub CopyToFilter ()Dim rngDatabase As RangeDim rngCriteria As Range"määratlege andmebaas ja kriteeriumivahemikudMäära rngDatabase = Sheets ("Andmebaas"). Vahemik ("A1: H50")Määra rngCriteria = Sheets ("Criteria"). Vahemik ("A1: H3")"kopeerige filtreeritud andmed teise kohtarngDatabase.AdvancedFilter Action: = xlFilterCopy, CriteriaRange: = rngCriteria, CopyToRange: = Vahemik ("N1: U1"), Unikaalne: = TõsiEnd Sub

Pange tähele, et oleksime võinud täpsema filtri koodireal argumentide nimed välja jätta, kuid nimega argumentide kasutamine muudab koodi hõlpsamini loetavaks ja arusaadavaks.

See allpool olev rida on identne ülaltoodud protseduuri joonega.

1 rngDatabase.AdvancedFilter xlFilterCopy, rngCriteria, Range ("N1: U1"), True

Kui kood on käivitatud, kuvatakse esialgsed andmed koos filtreeritud andmetega, mis on näidatud protseduuris määratud sihtkohas.

Duplikaatide eemaldamine andmetest

Saame andmetest duplikaadid eemaldada, jättes argumendi Kriteeriumid välja ja kopeerides andmed uude asukohta.

1234567 Sub RemoveDuplicates ()Dim rngDatabase As Range'määratlege andmebaasMäära rngDatabase = Sheets ("Andmebaas"). Vahemik ("A1: H50")filtreerige andmebaas uude vahemikku, mille ainulaadne väärtus on tõenerngDatabase.AdvancedFilter Action: = xlFilterCopy, CopyToRange: = Vahemik ("N1: U1"), Unikaalne: = TõsiEnd Sub

wave wave wave wave wave