[英]VBA Loop PivotTable
我使用以下代碼遍歷數據透視表中的每個國家/地區:
Sub AutoLoop()
Dim PT As PivotTable
Set PT = ActiveSheet.PivotTables(1)
Dim Country As PivotItem
For Each Country In PT.PivotFields("Country Name").PivotItems
MsgBox PT.PageFields("Country Name").DataRange.Value
Next Country
End Sub
但是,消息框始終為每個國家/地區返回值“全部”,因為這是“國家/地區名稱”頁面字段中的默認選擇。 它不會遍歷並給出每個國家的國家名稱。 如果我手動選擇一個國家,則消息框將始終返回該國家。 如何獲取MsgBox代碼以考慮循環?
從本質上講,我需要的是PageField的DataRange進行更改並顯示當前國家/地區,而不是僅在不更改數據透視表中的DataRange的情況下使國家/地區循環通過。
我可能不太了解您的目標,但是如果我對您要遍歷每個國家的說法是正確的,請更改數據透視表的頁面字段以顯示該國家/地區,然后將該國家/地區的名稱輸出到消息框,有點遙遠。
看看您如何遍歷Country
? 您沒有在循環中使用它。 您應該使用它。 請參閱下面的代碼。
Sub AutoLoop()
Dim PT As PivotTable
Set PT = ActiveSheet.PivotTables(1)
Dim Country As PivotItem
For Each Country In PT.PivotFields("Country").PivotItems
PT.PivotFields("Country").ClearAllFilters
PT.PivotFields("Country").CurrentPage = Country.Name
MsgBox Country.Name
Next Country
End Sub
這已經過嘗試和測試(再次,如果我理解正確的話)。 它的作用是在每次迭代中都清除篩選器(為了安全起見),將篩選器更改為當前的Country
並將該Country
的名稱輸出到消息框。
請參閱以下屏幕截圖:
讓我們知道是否有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.