簡體   English   中英

VBA循環數據透視表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM