首页 > 解决方案 > 返回与下拉列表匹配的一组单元格

问题描述

我正在尝试根据另一个工作簿中的下拉列表返回数据透视表中的一组单元格。在此示例中,当我选择“Store 1”时,我希望返回整个子表,例如

混乱 2 4534,夜间 2 4274,工具 3 8123

我相信这是一个子行,但使用函数 GETPIVOTDATA 只喜欢返回特定值,因为在引用下拉列表时我只能提取总数。这是我的数据透视表。

在此处输入图像描述

任何帮助表示赞赏。

RAWDATA(不是图像):

STORE    ID       Category  Sum
Store 1           1 Tools         4050
Store 2           2 Food          4051
Store 3           3 Tools         4052
Store 4           4 Mess          4053
Store 5           5 Random        4054
Store 6           6 Mal           4055
Store 1           7 Night          200
Store 2           8 Releif        4057
Store 3           9 Test           154
Store 4          10 Tools         4059
Store 5          11 Food          4060
Store 6          12 Tools        54665
Store 1          13 Mess           454
Store 2          14 Random          45
Store 3          15 Mal           4064
Store 4          16 Night         4065
Store 5          17 Releif          45
Store 6          18 Test          1451
Store 1          19 Tools         4068
Store 2          20 Food          4069
Store 3          21 Tools           15
Store 4          22 Mess          4071
Store 5          23 Random        4072
Store 6          24 Mal           4073
Store 1          25 Night         4074
Store 2          26 Releif        4075
Store 3          27 Test          4076
Store 4          28 Tools           45
Store 5          29 Food          4078
Store 6          30 Tools           45
Store 1          31 Mess          4080
Store 2          32 Random          42
Store 3          33 Mal            523
Store 4          34 Night          453
Store 5          35 Releif           4
Store 6          36 Test           532
Store 1          37 Tools            5
Store 2          38 Food          4087
Store 3          39 Tools         2425
Store 4          40 Mess             2
Store 5          41 Random          45
Store 6          42 Mal              3

标签: excelexcel-formula

解决方案


Dashboard此代码在工作簿、工作表Summary、单元格中查找更改,然后使用 VBAE3更改数据透视表的值。pTbl

触发时,VBA 代码将

  • 清除过滤器(如果存在)
  • 用内容过滤数据E3

要访问 VBA:

  • 按 alt-F11
  • 展开 Microsoft Excel 对象(左侧)
  • 找到“摘要”工作表

在此处输入图像描述


查找数据透视表的名称:

  • 单击数据透视表
  • 单击“数据透视表分析”选项卡
  • 在左侧,您将看到“数据透视表名称:”
  • pTbl(当前为“PivotTable6”)更改为此名称

在此处输入图像描述


您可以根据需要更改DashboardSummaryE3和的值pTbl

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim wb As Workbook: Set wb = Workbooks("Dashboard")
    Dim ws As Worksheet: Set ws = wb.Worksheets("Summary")
    Dim trigRng As Range: Set trigRng = ws.Range("E3")
    Dim pTbl as String

    pTbl = "PivotTable6"
   
    If Not Application.Intersect(trigRng, Range(Target.Address)) Is Nothing Then
        ws.PivotTables(pTbl).PivotFields("Store").ClearAllFilters
        ws.PivotTables(pTbl).PivotFields("Store").PivotFilters.Add2 Type:=xlCaptionEquals, Value1:=trigRng.Value
    End If
End Sub

推荐阅读