VBA循环,选择数据透视表中的下一个条目

时间:2018-05-31 09:25:46

标签: excel vba loops pivot

我有一个数据透视表,我想在其中选择第一个条目,运行宏,然后选择下一个条目并再次运行宏,依此类推,直到列表完成。

我有一个名为"实体名称"它是一个报告过滤器,大约有30个不同的实体。我试着在下一张表中从数据库中选择名称:

好的,这是我到目前为止的代码,但它没有按预期工作。我没有Pivot循环测试它,一切都很好,但是我必须手动循环遍历数据透视表atm:

 Dim pt As PivotTable
        Dim pf As PivotField
        Dim pi As PivotItem

        Set pt = Sheet2.PivotTables("PivotTable14")
        Set pf = pt.PivotFields("Entity Name")

        For Each pi In pf.PivotItems



       Windows("SOW.xlsm").Activate

    Sheets(1).Copy After:=Sheets(Sheets.Count)




        Windows("2Copy of Coalition FY17 Database - Global Wallet - Switzerland.xlsx").Activate
        Range("C41:J79").Copy
        Windows("SOW.xlsm").Activate
        Range("D5").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False



   Next pi

End Sub

1 个答案:

答案 0 :(得分:0)

这是一些相当通用的代码,用于循环遍历指定页面字段中存在的所有项目:

Sub LoopPivotPageFields()
    Dim pt As PivotTable
    Dim pf As PivotField
    Dim pi As PivotItem

    Set pt = Sheet1.PivotTables("PivotTable1")
    Set pf = pt.PivotFields("Entity Name")

    For Each pi In pf.PivotItems
        'Do something with the pivot item
        Debug.Print "Do something with pivot item " & pi.Name
        ' For example: set page filter
        pf.ClearAllFilters
        pf.CurrentPage = pi.Name
        Debug.Print "Pivot table is filtered to page item: " & pi.Name
    Next pi
End Sub

将“行动”替换为您需要对每个项目执行的操作......