VBA napredni filtar

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

wave wave wave wave wave