创建一个数据透视表,从单元格接收数据并相应地过滤

时间:2016-06-23 11:17:16

标签: vba excel-vba pivot-table excel

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Intersect(Target, Range("J2")) Is Nothing Then Exit Sub

'Set the Variables to be used
Dim pt As PivotTable
Dim Field As PivotField
Dim NewPolicy As Double

'Here you amend to suit your data
Set pt = Worksheets("Payment Data").PivotTables("PivotTable1")
Set Field = pt.PivotFields("POL_NUMBER")
NewPolicy = Worksheets("Payment Data").Range("J2").Value

'This updates and refreshes the PIVOT table
With pt
Field.ClearAllFilters
Field.CurrentPage = NewPolicy
pt.RefreshTable
End With

End Sub

为任何不正确的语法道歉,因为我是新手。在上面的代码中,我试图让A Pivot表从同一页面中的单元格接收一个值,然后立即更新自己,而不需要与引用的单元格进行交互。我从一个网站获得了这个代码并且我对它进行了定制但是我无法让Pivot表进行更新。在将此代码更改为上述状态之前,我的代码如下所示:

{{1}}

在旧的状态下,代码工作但我必须单击J2并单击工作表上的其他位置(J2从另一个工作表中的单元格获取其值,这是主数据输入表)。 我不想继续点击J2以更新Pivot表。一旦J2根据另一个工作表中的另一个单元格值(J2和连接中的其他单元格)更改其值,我希望它更新。

提前致谢, LHS

1 个答案:

答案 0 :(得分:0)

如果您使用的是Excel 2010或更高版本,则实际上并不需要代码来执行此操作,因为:

  • 在“过滤器”窗格中只显示一个字段的数据透视表 表现几乎与数据验证下拉列表完全相同;以及

  • 可以将数据透视表连接到其他数据透视表 切片器,以便控制它们。

以下是实施时的外观。顶部的Region下拉列表只是一个数据透视表,只显示了Region字段,作为Page Field。其他两个Pivots通过切片器连接到它。

Faux DV and Pivot

现在,如果您更改了区域选择,其他支点会自动更新:

Pivots are synced

当然,你可以直接使用切片机:

Just use a slicer

请参阅http://dailydoseofexcel.com/archives/2014/08/16/sync-pivots-from-dropdown/