VBA speciális szűrő

Ez az oktatóanyag elmagyarázza, hogyan kell használni a speciális szűrő módszert a VBA -ban

Az Excel speciális szűrése nagyon hasznos nagy adatmennyiségek kezelésekor, ahol különböző szűrőket szeretne egyszerre alkalmazni. Használható az ismétlődések eltávolítására is az adatokból. Mielőtt megpróbálna speciális szűrőt létrehozni a VBA -ból, ismernie kell az Excel speciális szűrő létrehozását.

Tekintsük a következő munkalapot.

Egy pillantással láthatja, hogy vannak ismétlődések, amelyeket esetleg el szeretne távolítani. A számla típusa a megtakarítás, a futamidő kölcsön és a csekk keveréke.

Először létre kell hoznia egy kritérium részt a speciális szűrőhöz. Ezt külön lapon teheti meg.

A könnyebb áttekinthetőség kedvéért az adatlapomat „Adatbázis” -nak, a kritériumlapomat pedig „Kritériumoknak” neveztem el.

Speciális szűrő szintaxis

Expression.AdvancedFilter Action, CriteriaRange, CopyToRange, egyedi

  • Az Kifejezés a tartományobjektumot képviseli - és tartományként állítható be (pl. tartomány („A1: A50”)) - vagy a tartomány hozzárendelhető egy változóhoz, és ez a változó használható.
  • Az Akció argumentum szükséges, és az xlFilterInPlace vagy xlFilterCopy lesz
  • Az Kritériumok tartománya érv az, ahonnan a kritériumokat szűrni szeretné (fenti kritériumlapunk). Ez opcionális, mivel nem kell feltétel, ha például egyedi értékeket szűr.
  • Az CopyToRange érv az, ahová a szűrési eredményeket helyezi - szűrheti a helyére, vagy másolhatja a szűrési eredményt egy másik helyre. Ez szintén opcionális érv.
  • Az Egyedi az érv is opcionális - Igaz csak egyedi rekordokra szűr, Hamis az összes olyan rekordot szűrni, amelyek megfelelnek a feltételeknek - ha ezt kihagyja, az alapértelmezett lesz Hamis.

Adatok szűrése a helyén

A kritériumlapon fent bemutatott kritériumok segítségével szeretnénk megtalálni az összes olyan fiókot, amely „Megtakarítás” és „Aktuális” típusú. A helyén szűrünk.

123456789 Sub CreateAdvancedFilter ()Dim rngDatabase As RangeDim rngCriteria As Range'határozza meg az adatbázist és a kritériumtartományokatÁllítsa be az rngDatabase = Sheets ("Database"). Tartomány ("A1: H50")Állítsa be az rngCriteria = Sheets ("Feltételek"). Tartomány ("A1: H3")'szűrje az adatbázist a feltételek alapjánrngDatabase.AdvancedFilter xlFilterInPlace, rngCriteriaEnd Sub

A kód elrejti azokat a sorokat, amelyek nem felelnek meg a feltételeknek.

A fenti VBA eljárásban nem vettük fel a CopyToRange vagy az Unique érveket.

Az adatok visszaállítása

Mielőtt újabb szűrőt futtatnánk, törölnünk kell az aktuális szűrőt. Ez csak akkor működik, ha a helyén szűrte az adatokat.

12345 Sub ClearFilter ()Hiba esetén Folytassa a következőt'állítsa vissza a szűrőt, hogy az összes adat megjelenjenActiveSheet.ShowAllDataEnd Sub

Egyedi értékek szűrése

Az alábbi eljárásba belefoglaltam az Egyedi érvet, de kihagytam a CopyToRange argumentumot. Ha kihagyja ezt az érvet, akkor BÁRMELYIK vesszőt kell elhelyezni az érvelés helyén

123456789 Egyedi értékek szűrője1 ()Dim rngDatabase As RangeDim rngCriteria As Range'határozza meg az adatbázist és a kritériumtartományokatÁllítsa be az rngDatabase = Sheets ("Database"). Tartomány ("A1: H50")Állítsa be az rngCriteria = Sheets ("Feltételek"). Tartomány ("A1: H3")'szűrje az adatbázist a feltételek alapjánrngDatabase.AdvancedFilter xlFilterInPlace, rngCriteria ,, IgazEnd Sub

VAGY elnevezett argumentumokat kell használnia az alábbiak szerint.

123456789 UniqueValuesFilter2 ()Dim rngDatabase As RangeDim rngCriteria As Range'határozza meg az adatbázist és a kritériumtartományokatÁllítsa be az rngDatabase = Sheets ("Database"). Tartomány ("A1: H50")Állítsa be az rngCriteria = Sheets ("Feltételek"). Tartomány ("A1: H3")'szűrje az adatbázist a feltételek alapjánrngDatabase.AdvancedFilter Action: = xlFilterInPlace, CriteriaRange: = rngCriteria, Unique: = TrueEnd Sub

Mindkét fenti kódpélda ugyanazt a szűrőt futtatja, amint az alább látható - az adatok csak egyedi értékekkel rendelkeznek.

A CopyTo argumentum használata

123456789 Sub CopyToFilter ()Dim rngDatabase As RangeDim rngCriteria As Range'határozza meg az adatbázist és a kritériumtartományokatÁllítsa be az rngDatabase = Sheets ("Database"). Tartomány ("A1: H50")Állítsa be az rngCriteria = Sheets ("Feltételek"). Tartomány ("A1: H3")'másolja a szűrt adatokat egy másik helyrerngDatabase.AdvancedFilter Action: = xlFilterCopy, CriteriaRange: = rngCriteria, CopyToRange: = Tartomány ("N1: U1"), Egyedi: = IgazEnd Sub

Ne feledje, hogy kihagyhattuk az argumentumok nevét a Speciális szűrő kódsorában, de a megnevezett argumentumok használata megkönnyíti a kód olvasását és megértését.

Ez az alábbi sor megegyezik a fent bemutatott eljárás sorával.

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

A kód futtatása után az eredeti adatok továbbra is megjelennek az eljárásban megadott célhelyen megjelenített szűrt adatokkal.

Ismétlődések eltávolítása az adatokból

Az ismétlődéseket eltávolíthatjuk az adatokból, ha kihagyjuk a Criteria argumentumot, és az adatokat egy új helyre másoljuk.

1234567 Sub RemoveDuplicates ()Dim rngDatabase As Range'határozza meg az adatbázistÁllítsa be az rngDatabase = Sheets ("Database"). Tartomány ("A1: H50")'szűrje az adatbázist egy új tartományba, amelynek egyedi értéke truerngDatabase.AdvancedFilter Action: = xlFilterCopy, CopyToRange: = Tartomány ("N1: U1"), Egyedi: = IgazEnd Sub

Segít a fejlesztés a helyszínen, megosztva az oldalt a barátaiddal

wave wave wave wave wave