我正在为办公室创建营销电子表格。我主要有两件事难以完成:
1) 根据源数据(约 3000 行)创建数据透视图仪表盘 2) 按销售代表、月份和季度筛选数据
我已经使用 Excel 和表格工作了大约 6 个月,并且对使用上述表格、数据透视表和图表相当熟悉;但我最近才开始学习使用 VBA 脚本来创建宏。
我的问题是:如何使用按钮为每个表应用多个过滤器。换句话说,我希望能够单击button A
该按钮来过滤 Jim 的销售情况。然后我希望能够单击另一个按钮button B
,除了过滤 Jim 的销售情况外,还过滤 Janet 的销售情况。
我的另一个想法是使用复选框为每个图表创建多个过滤器,但我不知道如何将复选框与数据透视表一起使用。
由于兼容性问题(Mac、Excel '07 之前的版本等),我无法使用切片器。可以这样做吗?
先感谢您。
答案1
我想向您推荐一种更简单、更快捷的解决方案。如果您使用此 VBA 代码,则无需创建许多按钮。
所有你需要做的。
选择包括标题行在内的整个数据范围,然后转到名称框或点击公式 TAB 并选择定义名称和命名数据范围。
使用 VBE(Visual Basic 编辑器)复制此 VBA 代码。
如果一切准备就绪,请双击销售人员的姓名。
Excel 将使用所点击的名称来过滤记录。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim rgTable As Range
Dim rgData As Range
Dim xColumn As Integer
On Error Resume Next
Application.ScreenUpdating = False
Set rgTable = Range("SALES")
With rgTable
Set rgData = .Offset(1, 0).Resize(.Rows.Count - 1, .Columns.Count)
If Not Application.Intersect(ActiveCell, rgData.Cells) Is Nothing Then
xColumn = ActiveCell.Column - .Column + 1
If ActiveSheet.AutoFilterMode = False Then
.AutoFilter
End If
If ActiveSheet.AutoFilter.Filters(xColumn).On = True Then
.AutoFilter Field:=xColumn
Else
.AutoFilter Field:=xColumn, Criteria1:=ActiveCell.Value
End If
End If
End With
Set rgData = Nothing
Set rgTable = Nothing
Application.ScreenUpdating = True
End Sub
注意:
1.我在将此代码作为解决方案发布在这里之前,已经对其进行了测试。
2. 根据您的要求,我建议使用双击方法。
3. 实际上,使用此代码 Excel 仅根据销售人员姓名过滤记录,这意味着它是单一条件过滤器。如果您想添加更多条件,则需要修改代码。
希望这对你有帮助。