简体   繁体   English

如何使用VBA从单元格值控制Excel PIVOT表

[英]How to control Excel PIVOT tables from cell values with VBA

I'm trying to refresh my pivot table base on two cell values. 我试图基于两个单元格值刷新我的数据透视表。 End user will type in value in cell B4 (Region) and value in cell B5 (Department). 最终用户将在单元格B4(区域)中输入值,并在单元格B5(部门)中输入值。 Pivot table would refresh base on these values. 数据透视表将根据这些值刷新。

I found code below, but only allows for referencing 1 cell value. 我在下面找到了代码,但只允许引用1个单元格值。 Not sure how to modify it for 2 cell values. 不知道如何修改2个单元格的值。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    'This line stops the worksheet updating on every change, it only updates when cell
    'B4 or B5 is touched

    If Intersect(Target, Range("B4:B5")) Is Nothing Then Exit Sub

    'Set the Variables to be used
    Dim pt As PivotTable
    Dim Field As PivotField
    Dim NewCat As String

    'Here you amend to filter your data
    Set pt = Worksheets("Sheet1").PivotTables("PivotTable1")
    Set Field = pt.PivotFields("Region")
    NewCat = Worksheets("Sheet1").Range("B4").Value

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

End Sub

I was able to use the code below to update my Pivot table filters. 我能够使用下面的代码更新我的数据透视表过滤器。 Hope this is helpful to others. 希望这对其他人有帮助。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

'This line stops the worksheet updating on every change, 'it only updates when cell'B4
'or B5 is touched

If Intersect(Target, Range("B4:B5")) Is Nothing Then Exit Sub

'Set the Variables to be used
Dim pt As PivotTable
Dim FieldRegion As PivotField
Dim FieldDept As PivotField
Dim NewRegion As String
Dim NewDept As String

'Amend here to filter your data
Set pt = Worksheets("Sheet1").PivotTables("PivotTable1")
Set FieldRegion = pt.PivotFields("Region")
Set FieldDept = pt.PivotFields("Department")
NewRegion = Worksheets("Sheet1").Range("B4").Value
NewDept = Worksheets("Sheet1").Range("B5").value

'This updates and refreshes the PIVOT table
With pt
FieldRegion.ClearAllFilters
FieldRegion.CurrentPage = NewRegion
FieldDept.ClearAllFilters
FieldDept.CurrentPage = NewDept
pt.RefreshTable
End With

End Sub

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM