簡體   English   中英

動態Excel VBA過濾器

[英]Dynamic Excel VBA filter

我有一個宏,可以根據修復標准過濾原始數據。 我已將這個宏分配給一個按鈕(移入)。

在此處輸入圖片說明

此宏顯示的是單元格D11(41值)代碼的詳細信息原始數據,例如

Sub Jan_in()
Application.ScreenUpdating = False
Dim sStradd As String
Sheets("Hiring_Attrition").Activate
Range("A3").Select
sStradd = ActiveCell.CurrentRegion.Address
ActiveSheet.Range(sStradd).AutoFilter Field:=1, Criteria1:="Jan-17"
Call clear
Sheets("Hiring_Attrition").Activate
ActiveSheet.Range("B3:H3").Select
Sheets("Hiring_Attrition").Range(Selection, Selection.End(xlDown)).Select
Selection.Copy Sheets("Report").Range("B8")
Selection.AutoFilter
Sheets("Report").Activate
Sheets("Report").Range("B:H").EntireColumn.AutoFit
Sheets("Report").Range("A1").Select
Application.ScreenUpdating = True
End Sub `

我有多個這樣的宏,但是現在我想要一個根據單元格引用選擇過濾器的宏。 像宏一樣,將條件1作為選定單元格所在的同一列的-2行,將條件2作為選定單元格同一行的-2列。

讓我知道是否需要進一步澄清。

動態過濾器:

我有一個帶有下拉選擇器的工作表(我是根據以下說明構建的: http : //www.techrepublic.com/blog/microsoft-office/how-to-add-a-drop-down-list-to-an -excel-cell / )。 可以根據選擇的項目來修改過濾器。 代碼如下:

For i = 1 To 10
If Range("SELECTOR").Value = Sheets("sheet2").Range("a" & i).Value Then
    Selected = i
End If
Next

上面的代碼標識從列表中選擇哪個值。 “ SELECTOR”是下拉單元格,我們將逐步瀏覽第二張工作表上的10個單元格,以確定選擇了哪個行號。 現在,您可以使用該信息來自定義過濾器。 例如:

If Selected = 7 Then
 Range("A4:Z1000").AutoFilter
 Range("A4:Z1000").AutoFilter field:=1, Criteria1:="", visibledropdown:=True
Else
 Range("A4:Z1000").AutoFilter
 Range("A4:Z1000").AutoFilter field:=Selected + 1, Criteria1:="x", 
 visibledropdown:=True
End If

我之所以先做空的AutoFilter,是因為它清除了以前的過濾器。 Criteria =“ x”,因為這就是我過濾的依據,但是您可以在變量中添加一個子變量以使其動態。

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM