动态Excel VBA筛选器
问题描述:
我有一个宏根据修复标准过滤原始数据。我已经在一个按钮上分配了这个宏(移入)。
该宏被示出的细节的原始数据为单元格D11(41值) 代码是这样动态Excel VBA筛选器
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
上面的代码标识列表中的哪个值被选中。 “选择器”是下拉单元格,我们正在逐步选择第二个表格中的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”,因为这是我过滤的内容,但是你可以在变量中使用动态变量。
希望这会有所帮助。
Im难以理解“Like Macro将采用标准一作为所选单元格所在的同一列的第二行,以及所选单元格的同一行的两个-2列”。 –
要设置标准,您可以将值存储在诸如criteria1和criteria2的变量中。要引用选定单元格旁边的2行,请使用以下内容:criteria1 = selection.Offset(RowOffSet:= - 2,ColumnOffset:= 0)。为列2选择criteria2 = Selection.Offset(RowOffSet:= 0,ColumnOffset: = -2)。选择 – TJYen