使用多个字段上的过滤条件过滤数据透视表

使用多个字段上的过滤条件过滤数据透视表

我正在为办公室创建营销电子表格。我主要有两件事难以完成:

1) 根据源数据(约 3000 行)创建数据透视图仪表盘 2) 按销售代表、月份和季度筛选数据

我已经使用 Excel 和表格工作了大约 6 个月,并且对使用上述表格、数据透视表和图表相当熟悉;但我最近才开始学习使用 VBA 脚本来创建宏。

我的问题是:如何使用按钮为每个表应用多个过滤器。换句话说,我希望能够单击button A该按钮来过滤 Jim 的销售情况。然后我希望能够单击另一个按钮button B,除了过滤 Jim 的销售情况外,还过滤 Janet 的销售情况。

我的另一个想法是使用复选框为每个图表创建多个过滤器,但我不知道如何将复选框与数据透视表一起使用。

由于兼容性问题(Mac、Excel '07 之前的版本等),我无法使用切片器。可以这样做吗?

先感谢您。

答案1

我想向您推荐一种更简单、更快捷的解决方案。如果您使用此 VBA 代码,则无需创建许多按钮。

所有你需要做的。

  1. 选择包括标题行在内的整个数据范围,然后转到名称框或点击公式 TAB 并选择定义名称和命名数据范围

  2. 使用 VBE(Visual Basic 编辑器)复制此 VBA 代码。

  3. 如果一切准备就绪,请双击销售人员的姓名。

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 仅根据销售人员姓名过滤记录,这意味着它是单一条件过滤器。如果您想添加更多条件,则需要修改代码。

希望这对你有帮助。

相关内容