چگونه با vba روی محدوده ای از داده ها فیلتر اعمال کنیم؟

ساختارautofilter
نحوه اعمال autofilter روی داده ها
مثال1 فیلتر کردن محصول tablet
مثال 2 فیلتر کردن دو محصول tablet و laptop
مثال 3 فیلتر کردن اعداد
مثال 4 فیلتر کردن ستونهای مختلف
AutoFilter در VBA اصطلاحی است که به کمک آن می توانیم به فیلتر کردن داده های خاص از بین انبوهی از داده های بزرگ بپردازیم. اگر با حجم عظیمی از داده ها سروکار داشته باشیم، براحتی می توانیم از گزینه AutoFilter برای ساده سازی فرایند کارمان استفاده کنیم.
ساختار autofilter
Autofilter(Field, Criteria 1, Operator, Criteria 2, Dropdown)
ما می توانیم AutoFilter را با شئی range بکار ببریم. در این ساختار ، range مشخص می کند که فیلتر ما در چه محدوده ای باید اعمال شود.
Field : به این معنی است که از کدام ستون محدوده انتخاب شده، می خواهید داده ها را فیلتر کنید. ستونها از چپ به راست شمرده میشوند.
به عنوان مثال، اگر محدوده ما A1:C20 باشد و بخواهیم برای ستون C یک فیلتر اعمال کنیم، شماره فیلد مورد نظر 3 خواهد بود زیرا در محدوده انتخاب شده، C ستون سوم است.
Criteria 1: شرط اول یا معیار اول آن چیزی است که می خواهیم در ستون انتخاب شده فیلتر شود.
Operator: اگر بخواهیم بیش از یک شرط یا معیار برای فیلتر کردن داده ها اعمال کنیم، باید از عملگرهایی مانند xlAnd و یا xlOr و غیره استفاده کنیم.
Criteria 2: آن چیزی است که می خواهیم بعنوان شرط دوم در ستون انتخاب شده فیلتر شود.
Visible Drop Down: این آرگومان وقتی مورد استفاده قرار می گیرد که بخواهیم آیکن فیلتر در ستون فیلتر شده نمایش داده شود یا خیر. برای نمایش آیکن مقدار آرگومان TRUE و در غیر این صورت FALSE خواهد بود.
نحوه اعمال autofilter روی داده ها
مثال: فرض کنید داده هایی به صورت جدول زیر داریم:

برای اعمال فیلتر با استفاده از کدنویسی در محیط vba می توانیم مراحل زیر را دنبال کنیم:
مرحله 1: کد نویسی را با نامگذاری یک سابروتین شروع می کنیم. در این مثال نام سابروتین ما AutiFilterExample است.
مرحله 2: اولین چیزی که برای اعمال فیلتر نیاز داریم تعیین محدوده ای است که باید فیلتر در آن محدوده اعمال شود و برای تعیین محدوده از شئی range استفاده می کنیم بصورت range(“A1:C12”)
مرحله 3: پس از اینکه محدوده داده ها را مشخص کردیم، با نوشتن AutoFilter می توانیم فیلتر مورد نظر را اعمال کنیم.
()Sub AutoFilterExample
Range(“A1:C12”).AutoFilter
End Sub

پس از اجرای ماکرو همانگونه که در سطر اول جدول ملاحظه می کنید آیکن فیلتر روی هر یک از ستونها اعمال شده است.
مثال 1 : فیلتر کردن محصول tablet
با توجه به داده های فوق، چنانجه بخواهیم محصول tablet را فیلتر کنیم یعنی از بین محصولات موجود در ستون A فقط محصول tablet نشان داده شود باید به صورت زیر بعد از تعیین محدوده با نوشتن autofilter به شماره ستونی اشاره کنیم که نام محصولات در آن ستون قرار گرفته است و پس از نوشتن شرط اول یا همان criteria1 باید به عبارت tablet اشاره داشته باشیم.لازم به ذکر است که عبارت tablet حتما باید در داخل دو تا دابل کوتیشن “” نوشته شود.
()Sub AutoFilter_Example1
” Range(“A1:C12”).AutoFilter”Field:=1, Criteria1:=”tablet
End Sub
پس از اجرای ماکرو ، نتیجه به صورت زیر خواهد بود که در آن صرفا محصول tablet به نمایش در خواهد آمد.

مثال 2 : فیلتر کردن دو محصول
در مثال قبلی ما نحوه فیلتر کردن یک مقدار خاصی مثلا محصول tablet را بررسی کردیم. اکنون، نحوه فیلتر کردن چند عنصر را بررسی می کنیم. به عنوان مثال، فرض کنید می خواهیم همراه با محصول tablet محصول دومی مثلا laptop را هم مورد فیلتر قرار دهیم. برای انجام این کار به صورت زیر ما باید از اپراتور or کمک بگیریم. به این صورت که پس از اعمال اولین شرط یعنی محصول tablet در آرگومان بعدی، باید به عملگر “xlOr” اشاره کنیم و سپس به شرط دوم یعنی محصول laptop اشاره داشته باشیم.
()Sub AutoFilter_Example2
“Range(“A1:C12″).AutoFilter Field:=1, Criteria1:=”tablet”, Operator:=xlOr, Criteria2:=”laptop
End Sub
پس از اجرای ماکرو ، فیلتر اعمال شده به صورت زیر خواهد بود.

مثال 3 : فیلتر اعداد با autofilter
با استفاده از اپراتور یا عملگر “XlAnd”، می توانیم اعداد را نیز فیلتر کنیم. به عنوان مثال، فرض کنید از ستون «sales» میخواهیم تمام مقادیری را که بزرگتر از 400 و کوچکتر 500 هستند را فیلتر کنیم. به صورت زیر عمل خواهیم کرد:
اولین کار اینست که باید به فیلد یا ستون 2 اشاره داشته باشیم. گام بعدی اینست که برای شرط اول عبارت “400<” و برای شرط دوم باید از عبارت”500>” استفاده کنیم و نهایتا بجای عملگر “xlor” باید از عملگر “xland” استفاده نماییم.
()Sub AutoFilter_Example3
Range(“A1:C12″).AutoFilter Field:=2, Criteria1:=”>400″, Operator:=xlAnd, Criteria2:=”<500″
End Sub
پس از اجرای ماکرو ، جدول داده های ما به صورت زیر خواهد بود و فروش هایی که بین 400 تا 500 هستند نمایش داده میشود.

مثال 4 : فیلتر کردن ستون های مختلف
برای فیلتر کردن ستون های مختلف جدول داده ها باید از یک فرآیند متفاوت استفاده کنیم. فرض کنید میخواهیم محصول «tablet» را فیلتر کنیم و همچنین می خواهیم مقدار فروش هایی که بین 300 تا 400 هست هم فیلتر شود.
برای اعمال فیلتر بیش از یک ستون باید از عبارت with و به صورت زیر کد نویسی خود را انجام دهیم.
()Sub AutoFilter_Example4
“With Range(“A1:C12”).AutoFilter Field:=1, Criteria1:=”tablet
“AutoFilter Field:=2, Criteria1:=”>300″, Operator:=xlAnd, Criteria2:=”<500
End With
End Sub
بعد از اجرای این ماکرو ما شاهد جدول زیر خواهیم بود:

چقدر این مقاله برای شما مفید بود؟
برای امتیاز دادن روی یکی از ستاره ها کلیک کنید(ستاره سمت چپ بیشترین امتیاز و ستاره سمت راست کمترین امتیاز)
میانگین امتیاز 5 / 5. تعداد امتیاز: 1
اولین کسی باشید که امتیاز میدهید