Excel 2017. 7 个工作表,1 个过滤器来改变它们
Excel 2017. 7 worksheets, 1 filter to change them all
我有 7 个作品sheet完全符合我的要求。我现在被要求提供一个过滤器来显示特定年份。完毕。但是要查看一年的趋势数据,我必须手动筛选每个 sheet。
我不介意多走一步,如果可能的话,在其中一个 sheet 中设置一个过滤器,以在所有其他 sheet 中组织年份。
我最大的sheet有=YEAR(O9:O29148)
。 A8:O8 以上所有内容在每个 sheet 上完全相同,每个 sheet 在同一列中具有相同类型的数据。唯一改变的是唯一数据本身。
我想要的是在我的仪表板上有一个年份过滤器 (2000-2018),然后它将过滤所有工作sheet以显示同一年,或者如果需要,可以显示所有数据。
这可能吗?
(我不理解 VBA 代码,但我可以将其插入 VBA 编辑器,然后 运行 表示宏)。
任何帮助将不胜感激,谢谢!
我不太了解您的数据设置方式,我构建了以下代码,在仪表板 worksheet_change
事件上使用此代码 sheet,其中我有 E6 控制年。我有 3 个其他 sheets,A 列中的数据带有年份数字,您可以将其用作基础。您将需要在最有可能的过滤器上试验您的列。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim wsWorksheet As Excel.Worksheet
If Target.Cells(1, 1).Address(False, False) = "E6" and Target.Cells.Count=1 Then
For Each wsWorksheet In ThisWorkbook.Worksheets
With wsWorksheet
If .Name <> Target.Worksheet.Name Then
If .UsedRange.AutoFilter Then
.UsedRange.AutoFilter 1, Target.Value
End If
End If
End With
Next wsWorksheet
End If
End Sub
Public Sub Filter_Sheets()
Dim i As Long
Dim comboBox As ControlFormat
With ThisWorkbook
Set comboBox = .Worksheets(9).Shapes("Drop Down 229").ControlFormat
For i = 1 To Worksheets.Count
.Worksheets(i).UsedRange.AutoFilter Field:=15, Criteria1:=comboBox.List(comboBox.ListIndex)
Next
End With
结束子
这是我设法发现的最合适的。我仍然收到错误消息(Range class 的 AutoFilter 方法失败)。然而,这确实有效。我现在使用组合框根据需要更改所有 7 张纸上的自动过滤器。为了返回 select 全部,在下拉列表引用的单元格中包含“<>”,再次处理 select 所有数据。
我不介意多走一步,如果可能的话,在其中一个 sheet 中设置一个过滤器,以在所有其他 sheet 中组织年份。
我最大的sheet有=YEAR(O9:O29148)
。 A8:O8 以上所有内容在每个 sheet 上完全相同,每个 sheet 在同一列中具有相同类型的数据。唯一改变的是唯一数据本身。
我想要的是在我的仪表板上有一个年份过滤器 (2000-2018),然后它将过滤所有工作sheet以显示同一年,或者如果需要,可以显示所有数据。
这可能吗?
(我不理解 VBA 代码,但我可以将其插入 VBA 编辑器,然后 运行 表示宏)。
任何帮助将不胜感激,谢谢!
我不太了解您的数据设置方式,我构建了以下代码,在仪表板 worksheet_change
事件上使用此代码 sheet,其中我有 E6 控制年。我有 3 个其他 sheets,A 列中的数据带有年份数字,您可以将其用作基础。您将需要在最有可能的过滤器上试验您的列。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim wsWorksheet As Excel.Worksheet
If Target.Cells(1, 1).Address(False, False) = "E6" and Target.Cells.Count=1 Then
For Each wsWorksheet In ThisWorkbook.Worksheets
With wsWorksheet
If .Name <> Target.Worksheet.Name Then
If .UsedRange.AutoFilter Then
.UsedRange.AutoFilter 1, Target.Value
End If
End If
End With
Next wsWorksheet
End If
End Sub
Public Sub Filter_Sheets()
Dim i As Long
Dim comboBox As ControlFormat
With ThisWorkbook
Set comboBox = .Worksheets(9).Shapes("Drop Down 229").ControlFormat
For i = 1 To Worksheets.Count
.Worksheets(i).UsedRange.AutoFilter Field:=15, Criteria1:=comboBox.List(comboBox.ListIndex)
Next
End With
结束子
这是我设法发现的最合适的。我仍然收到错误消息(Range class 的 AutoFilter 方法失败)。然而,这确实有效。我现在使用组合框根据需要更改所有 7 张纸上的自动过滤器。为了返回 select 全部,在下拉列表引用的单元格中包含“<>”,再次处理 select 所有数据。