سلام دوستان.
تو اين آموزش ميخوام بهتون ياد بدم چطور ميتونين با كمك ليستي كه از طريق Data Validation ساخته شده، يك فيلتر ايجاد كنيد.
از ساده ترين حالت شروع ميكنم:
فرض كنيد ما يكسري اطلاعات در يك جدول و در تب Data داريم و ميخوايم يكسري از اين اطلاعات رو مثلا نام و تاريخ و قيمت نهايي رو (به بقيه داده هاي جدول اصلي كاري نداريم) بر اساس نام فيلتر كنيم. يعني وقتي ما نام مورد نظر رو انتخاب كرديم سيستم اطلاعاتي كه لازم داريم (نام و تاريخ و قيمت نهايي) رو برامون بياره
در تب Excel Iran اين كدها رو وارد ميكنيم:
و حالا يك ماژول ميسازيم و اطلاعات زير رو توش كپي ميكنيم:
بقيه اطلاعات از قبيل name manager و Data Validation رو بهتره از طريق فايل پيگيري كنيد.
تو اين آموزش ميخوام بهتون ياد بدم چطور ميتونين با كمك ليستي كه از طريق Data Validation ساخته شده، يك فيلتر ايجاد كنيد.
از ساده ترين حالت شروع ميكنم:
فرض كنيد ما يكسري اطلاعات در يك جدول و در تب Data داريم و ميخوايم يكسري از اين اطلاعات رو مثلا نام و تاريخ و قيمت نهايي رو (به بقيه داده هاي جدول اصلي كاري نداريم) بر اساس نام فيلتر كنيم. يعني وقتي ما نام مورد نظر رو انتخاب كرديم سيستم اطلاعاتي كه لازم داريم (نام و تاريخ و قيمت نهايي) رو برامون بياره
در تب Excel Iran اين كدها رو وارد ميكنيم:
کد:
Private Sub Worksheet_Change(ByVal Target As Range)If Target.Address = "$C$8" Then Dim wsSD As Worksheet Dim wsS As Worksheet On Error GoTo errHandler Set wsSD = Sheets("Data") Set wsS = Sheets("Excel Iran") Application.EnableEvents = False If Target.Value = "" Then Call OrderSort("CriteriaName", True) Else Call OrderSort("CriteriaName", False) End If exitHandler: Application.EnableEvents = True Exit Sub errHandler: MsgBox "Could not filter orders" Resume exitHandler End If End Sub
کد:
Sub OrderSort(strExt As String, isempty As Boolean) Dim wsSD As Worksheet Dim wsS As Worksheet On Error GoTo errHandler Set wsSD = Sheets("Data") Set wsS = Sheets("Excel Iran") If isempty Then wsSD.Range("OrdersData").AdvancedFilter _ Action:=xlFilterCopy, _ CopyToRange:=wsS.Range("ExtractOrders"), Unique:=True Else wsSD.Range("OrdersData").AdvancedFilter _ Action:=xlFilterCopy, _ CriteriaRange:=wsSD.Range(strExt), _ CopyToRange:=wsS.Range("ExtractOrders"), Unique:=True End If exitHandler: Exit Sub errHandler: MsgBox "Could not filter orders" Resume exitHandler End Sub
کامنت