2014-09-23 299 views
0

我想刷新基於兩個單元格值的數據透視表。最終用戶將在單元格B4(區域)中鍵入值,並在單元格B5(部門)中鍵入值。數據透視表將刷新基於這些值。如何使用VBA從單元格值控制Excel PIVOT表格

我發現下面的代碼,但只允許引用1單元格的值。不知道如何修改它的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 

回答

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 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 
相關問題