[英]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.