Ovaj će vodič objasniti kako koristiti metodu naprednog filtera u VBA -i
Napredno filtriranje u Excelu vrlo je korisno pri radu s velikim količinama podataka na koje želite primijeniti različite filtre u isto vrijeme. Također se može koristiti za uklanjanje duplikata iz vaših podataka. Morate biti upoznati sa stvaranjem naprednog filtra u Excelu prije nego što pokušate stvoriti napredni filtar iz VBA -e.
Razmotrite sljedeći radni list.
Na prvi pogled možete vidjeti da postoje duplikati koje biste možda htjeli ukloniti. Vrsta računa mješavina je štednje, oročenog zajma i čeka.
Najprije morate postaviti odjeljak kriterija za napredni filtar. To možete učiniti na zasebnom listu.
Radi lakšeg snalaženja, nazvao sam svoj podatkovni list 'Baza podataka', a svoj kriterijski list 'Kriteriji'.
Napredna sintaksa filtera
Expression.AdvancedFilter Action, CriteriaRange, CopyToRange, Unique
- The Izraz predstavlja objekt raspona - i može se postaviti kao raspon (npr. raspon (“A1: A50”)) ili se raspon može dodijeliti varijabli i ta se varijabla može koristiti.
- The Akcijski argument je potreban i bit će ili xlFilterInPlace ili xlFilterCopy
- The Raspon kriterija argument je mjesto odakle dobivate kriterije za filtriranje (naš gornji list Kriteriji). Ovo je izborno jer vam ne bi bili potrebni kriteriji ako na primjer filtrirate jedinstvene vrijednosti.
- The CopyToRange Argument je mjesto gdje ćete staviti rezultate filtriranja - možete filtrirati na mjestu ili možete kopirati rezultat filtra na drugo mjesto. Ovo je također izborni argument.
- The Jedinstven argument je također neobavezan - Pravi filtrira samo jedinstvene zapise, Netočno je filtrirati sve zapise koji zadovoljavaju kriterije - ako ovo izostavite, zadana vrijednost bit će Netočno.
Filtriranje podataka na mjestu
Koristeći gore navedene kriterije u listu s kriterijima - želimo pronaći sve račune s vrstom 'Štednja' i 'Tekući'. Filtriramo na mjestu.
123456789 | Sub CreateAdvancedFilter ()Zatamnite rngDatabase As RangeDim rngCriteria As Range'definirati bazu podataka i raspone kriterijaPostavi rngDatabase = Listovi ("Baza podataka"). Raspon ("A1: H50")Postavi rngCriteria = Tablice ("Kriteriji"). Raspon ("A1: H3")'filtrirati bazu podataka prema kriterijimarngDatabase.AdvancedFilter xlFilterInPlace, rngCriteriaKraj podm |
Kôd će sakriti retke koji ne zadovoljavaju kriterije.
U gornji postupak VBA nismo uključili argumente CopyToRange ili Unique.
Poništavanje podataka
Prije nego što pokrenemo drugi filtar, moramo očistiti trenutačni. To će funkcionirati samo ako ste filtrirali svoje podatke.
12345 | Sub ClearFilter ()Uključeno Slijedi nastavak greške'resetirajte filtar za prikaz svih podatakaActiveSheet.ShowAllDataKraj podm |
Filtriranje jedinstvenih vrijednosti
U donji postupak uključio sam argument Unique, ali sam izostavio argument CopyToRange. Ako izostavite ovaj argument, vi ILI moraju staviti zarez kao držač mjesta za argument
123456789 | Pod UniqueValuesFilter1 ()Zatamnite rngDatabase As RangeDim rngCriteria As Range'definirati bazu podataka i raspone kriterijaPostavi rngDatabase = Listovi ("Baza podataka"). Raspon ("A1: H50")Postavi rngCriteria = Tablice ("Kriteriji"). Raspon ("A1: H3")'filtrirajte bazu podataka prema kriterijimarngDatabase.AdvancedFilter xlFilterInPlace, rngCriteria ,, TrueKraj podm |
ILI morate koristiti imenovane argumente kako je dolje prikazano.
123456789 | Pod UniqueValuesFilter2 ()Zatamnite rngDatabase As RangeDim rngCriteria As Range'definirati bazu podataka i raspone kriterijaPostavi rngDatabase = Listovi ("Baza podataka"). Raspon ("A1: H50")Postavi rngCriteria = Tablice ("Kriteriji"). Raspon ("A1: H3")'filtrirajte bazu podataka prema kriterijimarngDatabase.AdvancedFilter Action: = xlFilterInPlace, CriteriaRange: = rngCriteria, Unique: = TrueKraj podm |
Oba gornja primjera koda izvodit će isti filtar, kao što je prikazano u nastavku - podatke samo s jedinstvenim vrijednostima.
Korištenje argumenta CopyTo
123456789 | Sub CopyToFilter ()Zatamnite rngDatabase As RangeDim rngCriteria As Range'definirati bazu podataka i raspone kriterijaPostavi rngDatabase = Listovi ("Baza podataka"). Raspon ("A1: H50")Postavi rngCriteria = Tablice ("Kriteriji"). Raspon ("A1: H3")'kopirajte filtrirane podatke na drugo mjestorngDatabase.AdvancedFilter Action: = xlFilterCopy, CriteriaRange: = rngCriteria, CopyToRange: = Range ("N1: U1"), Unique: = TrueKraj podm |
Imajte na umu da smo mogli izostaviti nazive argumenata u retku koda Advanced Filter, ali upotreba imenovanih argumenata čini kôd lakšim za čitanje i razumijevanje.
Ovaj donji redak identičan je retku u gore prikazanom postupku.
1 | rngDatabase.AdvancedFilter xlFilterCopy, rngCriteria, Range ("N1: U1"), True |
Nakon pokretanja koda, izvorni podaci i dalje se prikazuju s filtriranim podacima prikazanim na odredišnom mjestu navedenom u postupku.
Uklanjanje duplikata iz podataka
Možemo ukloniti duplikate iz podataka izostavljanjem argumenta Kriteriji i kopiranjem podataka na novo mjesto.
1234567 | Sub RemoveDuplicates ()Zatamnite rngDatabase As Range'definirati bazu podatakaPostavi rngDatabase = Listovi ("Baza podataka"). Raspon ("A1: H50")'filtrirajte bazu podataka u novi raspon s jedinstvenim postavkom na truerngDatabase.AdvancedFilter Action: = xlFilterCopy, CopyToRange: = Raspon ("N1: U1"), Unique: = TrueKraj podm |