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 |