فیلتر یک لیست بر اساس حروف تایپ شده (ماکرو نویسی ساده)

فیلتریک لیست روشی قدرتمند و ساده جهت تجزیه و تحلیل داده هاست.

اما فیلتر کردن در اکسل نیازمند کلیک های زیاد و تایپ اطلاعات جهت رسیدن به نتیجه دلخواه می باشد.

اگر با اکسس آشنایی داشته باشید می بینید که به محض تایپ یک حرف، کلیه کلماتی که دارای حرف تایپ شده هستند فیلتر می شوند.

اما در اکسل چنین کاری به صورت پیش فرض امکان پذیر نیست.

در این مقاله قصد دارم این روش را با نوشتن یک خط کد VBA برای شما توضیح دهم.

فیلتر کردن بر اساس حروف تایپ شده

مرحله 1: یک لیست شامل داده هایی که قصد فیلتر کردن آن را دارید آماده کنید

برای سادگی کار فرض کنید که لیست استان ها در یک جدول که نام آن را “استان” گذاشته ایم آماده کرده ایم.

برای آشنایی با  نام گذاری به این مقاله مراجعه کنید

مرحله 2: یک باکس متنی از نوع active-x در صفحه قرار دهید.

برای انجام این کار به تب Developer رفته و سپس بر روی insert کلیک کرده و از قسمت active-x control بر روی text box کلیک کنید

بهتر است که این کنترل باکس را بالای اسامی استان ها قرار دهید.

فیلتر- Text Box

فیلتر

توجه: تب  Developer به صورت پیش فرض در منوهای اکسل قرار ندارد. برای فعال کردن آن به مسیر زیر بروید

File>Options>Customize Ribbon و سپس از پنجره سمت راست تیک کنار عبارت Developer را فعال کرده و بر روی دکمه Ok کلیک کنید

تا این نوار ابزار به منوهای اکسل اضافه شود.

مرحله 3: تکست باکس را به یک سلول خالی لینک کنید

برای انجام این کار بر روی text box راست کلیک کرده و بر روی Properties کلیک کنید.

از پنجره ظاهر شده مقابل Linked Cell آدرس سلول لینک را وارد کنید. در این مثال من آن را به E4 لینک کرده ام.

فیلتر - cell link

فیلتر

مرحله 4: خاصیت change event را به text box اضافه کنید.

بر روی text box راست کلیک کرده و بر روی view code کلیک کنید تا به صفحه ویرایشگر VBA وارد شوید.

می بینید که دو خط کد به صورت زیر ایجاد شده است

()Private Sub TextBox1_Change

 

End Sub

کد نوشته شده در پایین را بین دو خط کد نوشته شده قرار دهید

تعریف اصلاح Event

Event یک ماکرو است (کد VBA) و زمانی که یک وضعیت دلخواه اتفاق می افتد اجرا می شود.

به عنوان مثال TextBox1_Change وقتی که مقدار text box تغییر کند کدی را اجرا می کند این تغییر می تواند ورد یک مقدار، تغییر یک مقدار و یا حذف مقدار درون text box باشد.

ما در اینجا برای فیلتر کردن جدول اطلاعات (استان) باید یک کد VBA بنویسیم تا زمانی که کاربر مقداری را درون text box می نویسد این کد اجرا شده

و عمل فیلتر کردن را بر اساس مقدار وردی به text box انجام دهد. این کد فقط یک خط است.

ActiveSheet.ListObjects(“states“).Range.AutoFilter Field:=1, Criteria1:=”*” & [A1] & “*”, Operator:=xlFilterValues

در اینجا می توانید نام جدول (states) و سلول لینک (A1) را بر اساس اطلاعات خود در کد بالا تغییر دهید.

حالا VBA را ببندید و به اکسل بازگردید.

مرحله 5: در این مرحله حروفی را  text box بنویسید و نتیجه را مشاهده کنید.

توجه: اگر در مرحله طراحی هستید (design mode) با کلیک بر روی دکمه design mode در تب Developer از آن خارج شوید.

 

دانلود فایل این مقاله