使用VBA从单元格值控制Excel数据透视表的过滤器

时间:2016-09-19 07:34:31

标签: excel vba excel-vba macros powerpivot

我正在尝试根据两个单元格值刷新powerpivot数据透视表。最终用户将使用单元格C17和C18中的下拉列表来导出单元格G17和G18中的值(通过一些Excel计算)。数据透视表将根据Cell G17和G18进行刷新。

我编写了如下脚本代码,但是当我从C17和C18的下拉列表中选择一个值后,它似乎没有工作,因为数据透视表没有刷新。

Sub Worksheet_SelectionChange(ByVal Target As Range)

If Intersect(Target, Range("G17:G19")) Is Nothing Then Exit Sub

Dim pt As PivotTable
Dim FieldHr As PivotField
Dim FieldEndingMin As PivotField
Dim NewHr As String
Dim NewMin As String

Set pt = Worksheets("Calculator").PivotTables("Table1")
Set FieldHr = pt.PivotFields("Hr")
NewHr = Worksheets("Calculator").Range("G17").Value
Set FieldEndingMin = pt.PivotFields("Ending Min")
NewMin = Worksheets("Calculator").Range("G18").Value

With pt
FieldHr.ClearAllFilters
FieldHr.CurrentPage = NewHr
FieldEndingMin.ClearAllFilters
FieldEndingMin.CurrentPage = NewMin
pt.RefreshTable
End With

End Sub

1 个答案:

答案 0 :(得分:0)

我将代码从fill!(x,zeros(y))移至Worksheet_SelectionChange事件。

我添加了Worksheet_Change范围,细胞C17:C18和细胞G17:G19(需要G19吗?在你的帖子中提到G17:G18)。

Union