Овај водич ће објаснити како се користи метода напредног филтера у ВБА
Напредно филтрирање у Екцелу је веома корисно када се бавите великим количинама података на које желите да примените различите филтере у исто време. Такође се може користити за уклањање дупликата из ваших података. Морате бити упознати са креирањем напредног филтера у Екцелу пре него што покушате да креирате напредни филтер из ВБА.
Размотрите следећи радни лист.
На први поглед можете видети да постоје дупликати које бисте можда желели да уклоните. Тип рачуна је мешавина штедње, ороченог зајма и чека.
Прво морате да подесите одељак критеријума за напредни филтер. То можете учинити на посебном листу.
Ради лакшег сналажења, назвао сам свој лист са подацима „База података“, а листу са критеријумима „Критеријуми“.
Напредна синтакса филтера
Екпрессион.АдванцедФилтер Ацтион, ЦритериаРанге, ЦопиТоРанге, Уникуе
- Тхе Израз представља објекат опсега - и може се поставити као опсег (нпр. опсег („А1: А50”)) - или се опсег може доделити променљивој и та променљива се може користити.
- Тхе поступак аргумент је обавезан и биће или клФилтерИнПлаце или клФилтерЦопи
- Тхе Опсег критеријума аргумент је место одакле добијате критеријуме за филтрирање (наш горњи лист Критеријуми). Ово је опционално јер вам не би били потребни критеријуми ако бисте, на пример, филтрирали јединствене вредности.
- Тхе ЦопиТоРанге аргумент је место где ћете ставити резултате филтрирања - можете филтрирати на месту или можете копирати резултат филтера на алтернативну локацију. Ово је такође изборни аргумент.
- Тхе Јединствен аргумент је такође опциони - Истина је да филтрира само јединствене записе, Нетачно је да филтрирате све записе који испуњавају критеријуме - ако ово изоставите, подразумевана вредност ће бити Нетачно.
Филтрирање података на месту
Користећи горе наведене критеријуме у табели са критеријумима - желимо да пронађемо све рачуне са врстом „Штедња“ и „Текући“. Филтрирамо на месту.
123456789 | Суб ЦреатеАдванцедФилтер ()Затамните рнгДатабасе Ас РангеДим рнгЦритериа Ас Ранге'дефинишу базу података и опсеге критеријумаПодесите рнгДатабасе = Табеле ("База података"). Опсег ("А1: Х50")Подесите рнгЦритериа = Табеле ("Критеријуми"). Опсег ("А1: Х3")'филтрирајте базу података према критеријумурнгДатабасе.АдванцедФилтер клФилтерИнПлаце, рнгЦритериаЕнд Суб |
Код ће сакрити редове који не испуњавају критеријуме.
У горњој ВБА процедури нисмо укључили аргументе ЦопиТоРанге или Уникуе.
Ресетовање података
Пре него што покренемо други филтер, морамо да очистимо тренутни. Ово ће радити само ако сте филтрирали своје податке.
12345 | Суб ЦлеарФилтер ()На Грешка Настави даље'ресетујте филтер да прикаже све податкеАцтивеСхеет.СховАллДатаЕнд Суб |
Филтрирање јединствених вредности
У процедуру испод, укључио сам Уникуе аргумент, али сам изоставио ЦопиТоРанге аргумент. Ако изоставите овај аргумент, ви ИЛИ морају ставити зарез као чувар места за аргумент
123456789 | Под УникуеВалуесФилтер1 ()Затамните рнгДатабасе Ас РангеДим рнгЦритериа Ас Ранге'дефинишу базу података и опсеге критеријумаПодесите рнгДатабасе = Табеле ("База података"). Опсег ("А1: Х50")Подесите рнгЦритериа = Табеле ("Критеријуми"). Опсег ("А1: Х3")'филтрирајте базу података према критеријумурнгДатабасе.АдванцедФилтер клФилтерИнПлаце, рнгЦритериа ,, ТруеЕнд Суб |
ИЛИ морате да користите именоване аргументе као што је приказано испод.
123456789 | Под УникуеВалуесФилтер2 ()Затамните рнгДатабасе Ас РангеДим рнгЦритериа Ас Ранге'дефинишу базу података и опсеге критеријумаПодесите рнгДатабасе = Табеле ("База података"). Опсег ("А1: Х50")Подесите рнгЦритериа = Табеле ("Критеријуми"). Опсег ("А1: Х3")'филтрирајте базу података према критеријумурнгДатабасе.АдванцедФилтер Ацтион: = клФилтерИнПлаце, ЦритериаРанге: = рнгЦритериа, Уникуе: = ТруеЕнд Суб |
Оба горња примера кода ће покренути исти филтер, као што је приказано испод - податке са само јединственим вредностима.
Коришћење аргумента ЦопиТо
123456789 | Суб ЦопиТоФилтер ()Затамните рнгДатабасе Ас РангеДим рнгЦритериа Ас Ранге'дефинишу базу података и опсеге критеријумаПодесите рнгДатабасе = Табеле ("База података"). Опсег ("А1: Х50")Подесите рнгЦритериа = Табеле ("Критеријуми"). Опсег ("А1: Х3")'копирајте филтриране податке на алтернативну локацијурнгДатабасе.АдванцедФилтер Ацтион: = клФилтерЦопи, ЦритериаРанге: = рнгЦритериа, ЦопиТоРанге: = Ранге ("Н1: У1"), Уникуе: = ТруеЕнд Суб |
Имајте на уму да смо могли изоставити имена аргумената у линији кода Адванцед Филтер, али коришћење именованих аргумената чини код лакшим за читање и разумевање.
Ова доња линија је идентична линији у горе приказаној процедури.
1 | рнгДатабасе.АдванцедФилтер клФилтерЦопи, рнгЦритериа, Ранге ("Н1: У1"), Тачно |
Када се код покрене, оригинални подаци се и даље приказују са филтрираним подацима приказаним на одредишној локацији наведеној у процедури.
Уклањање дупликата из података
Можемо уклонити дупликате из података изостављањем аргумента Критеријуми и копирањем података на нову локацију.
1234567 | Суб РемовеДуплицатес ()Затамните рнгДатабасе Ас Ранге'дефинишите базу податакаПодесите рнгДатабасе = Табеле ("База података"). Опсег ("А1: Х50")'филтрирајте базу података у нови опсег са јединственим постављеним на труернгДатабасе.АдванцедФилтер Ацтион: = клФилтерЦопи, ЦопиТоРанге: = Ранге ("Н1: У1"), Уникуе: = ТруеЕнд Суб |