با سلا خدمت کاربران عزیز سایت آی تی سواد
این مقاله روشی را برای شما فراهم میکند که فورا ً همان طور که در یک سلول در اکسل تایپ میکنید ، جستجو کنید و فیلتر کنید .
همانطور که در عکس زیر نشان داده شد، شما یک فهرست نام دارید که میخواهید فورا ً به همان اندازه که در یک سلول خاص تایپ میکنید ، جستجو کنید و فیلتر کنید . لطفا ً جستجو در اکسل با کدنویسی را به صورت زیر انجام دهید تا آن را وارد کنید .
جستجو در اکسل با کد نویسی
۱. اول،شما باید جدولی را با دادههای لیست ایجاد کنید، و جدول را به نام “Name” نامگذاریکنید.لطفاً تمام لیست را انتخاب کنید و گزینه Insert > Table را کلیک کنید.
۲. در پنجره باز شده Create Table روی OK کلیک کنید.
۳. روی هر سلول از جدول کلیک کنید تا زبانه Design را فعال کنید، و سپس Table Name را به نام Name تغییر دهید.
۴. روی ( Developer > Insert > Text Box (ActiveX Control) کلیک کنید تا یکجعبه متنی را در بالای فهرست جدول قرار دهید، همانطور که عکس زیر نشان داده شد:
۵. روی کادر متن کلیک کرده و روی Properties، در پنجره Properties ، سلول مرجع را درجعبه LinkedCell تایپ کنید.
۶. روی کادر متن کلیک کرده و View Code را از منوی متنی انتخاب کنید. سپس کد VBA زیر رادر پنجره Microsoft Visual Basic for Applications به جای کد اصلی جایگزین کنید.
کد VBA: جستجوی فیلتر خودکار زمانی که شما در اکسل تایپ میکنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
Private Sub TextBox1_Change() 'Update by Extendoffice 2018/08/22 Dim xStr, xName As String Dim xWS As Worksheet Dim xRg As Range On Error GoTo Err01 Application.ScreenUpdating = False xName = "Name" xStr = TextBox1.Text Set xWS = ActiveSheet Set xRg = xWS.ListObjects(xName).Range If xStr <> "" Then xRg.AutoFilter field:=1, Criteria1:="*" & xStr & "*", Operator:=xlFilterValues Else xRg.AutoFilter field:=1, Operator:=xlFilterValues End If Err01: Application.ScreenUpdating = True End Sub |
نکته : در کد ، نام جعبه متن گذاشته شده TextBox1 نام دارد ،name نام فهرست جدول است . شما میتوانید آنها را براساس نیازهای خود تغییر دهید .
۷. کلیدهای Alt + Q را فشار دهید تا Microsoft Visual Basic for Applications بسته شود .
۸. با کلیک روی Developer > Design Mode.، مد طراحی را خاموش کنید .
از این به بعد ، براساس مقدار وارد شده در جعبه متن جستجو فیلتر بلافاصله انجام خواهد شد .
نکته: اگر در داده های شما عدد وجود داشته باشد از کد زیر استفاده کنید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
Private Sub TextBox1_Change() 'Update by Extendoffice 2018/08/22 Dim xStr, xName As String Dim xWS As Worksheet Dim xRg As Range On Error GoTo Err01 Application.ScreenUpdating = False xName = "Name" xStr = TextBox1.Text Set xWS = ActiveSheet Set xRg = xWS.ListObjects(xName).Range If xStr <> "" Then If IsNumeric(xStr) Then xRg.AutoFilter field:=1, Criteria1:=xStr End If xRg.AutoFilter field:=1, Criteria1:="*" & xStr & "*", Operator:=xlFilterDynamic Else xRg.AutoFilter field:=1, Operator:=xlFilterValues End If Err01: Application.ScreenUpdating = True End Sub |
ترجمه شده از سایت www.extendoffice.com
سلام ،من وقتی ورک شیتم از چپ به راسته مشکلی نداره ولی وقتی از راست به چپ میکنم چینش صفحه رو ستون های اکسل تا اخر باز میمونن،هر کاری کردم نتونستم رنج رو اصلاح کنم که درستش کنم میشه راهنماییم کنید
سلام
یه عکس از مشکلتون به ای دی @hamedmahmoudkhani تلگرام بفرستین
خدا خیرتون بده