Excel表格 - 跨多个工作表复制自动过滤器

时间:2017-01-29 02:52:48

标签: excel vba

我有5张不同的工作表和不同的数据集,但我想在同一天过滤所有数据。我正在寻找一种方法来自动使用VBA或高级过滤器(?),我正在努力找到一种方法。

我所追求的是将一个过滤器应用于一个“主”工作表,其余4个工作表自动应用与主工作表中相同的日期过滤器。例如,如果我想显示2015年11月的所有数据,如果我在表1中对此进行过滤,希望表2,3和4也将显示2015年11月的数据。

我发现许多在线VBA解决方案在编码中指定了过滤条件,但标准会根据用户的要求而变化。有没有办法从主表单复制过滤器?这是我在内部编码的标准中找到的代码;

Private Sub Worksheet_Change(ByVal Target As Range)
    ActiveSheet.ListObjects("Table4").Range.AutoFilter Field:=3, Criteria1:="=True"
End Sub 

提前致谢!

1 个答案:

答案 0 :(得分:1)

假设您只在主工作表中选择一个条件,则可以在主工作表中使用VBA ComboBOX控件来填充筛选条件。下一步,您可以编写如下所示的ComboBox更改事件的代码,该事件将过滤器应用于所有剩余的四个工作表。
在此ComboBox Change事件宏中,您可以获取ComboBox的值,并将其作为所有四个工作表的过滤条件传递,如下所示。请注意,在我的情况下,我已经考虑只有两列的表,第一列在每个工作表中有一个日期的过滤条件,表中的第二列有一些虚拟值。

Private Sub ComboBox21_Change()
Date = ComboBox21.Value
Worksheets("Sheet1").Range("Table1").AutoFilter Field:=1, Operator:= _
        xlFilterValues, Criteria2:=Array(1, Date)
Worksheets("Sheet2").Range("Table2").AutoFilter Field:=1, Operator:= _
        xlFilterValues, Criteria2:=Array(1, Date)
Worksheets("Sheet3").Range("Table3").AutoFilter Field:=1, Operator:= _
        xlFilterValues, Criteria2:=Array(1, Date)
Worksheets("Sheet4").Range("Table4").AutoFilter Field:=1, Operator:= _
        xlFilterValues, Criteria2:=Array(1, Date)
End Sub