Excel 用于动态数据透视表更新的循环VBA代码

Excel 用于动态数据透视表更新的循环VBA代码,excel,vba,Excel,Vba,我已经找到了一个解决方案,可以从一个运行良好的excel单元格中动态调整透视表过滤器;请看这里: Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) 'This line stops the worksheet updating on every change, it only updates when cell 'D1 or D2 is touched

我已经找到了一个解决方案,可以从一个运行良好的excel单元格中动态调整透视表过滤器;请看这里:

    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As 
    Range)
    'This line stops the worksheet updating on every change, it only 
    updates when cell
    'D1 or D2 is touched
    If Intersect(Target, Worksheets("test").Range("D1:D2")) 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 suit your data
    Set pt = Worksheets("test").PivotTables("PivotTable2")
    Set Field = pt.PivotFields("Name")
    NewCat = Worksheets("test").Range("D1").Value

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

    End Sub
我试图弄清楚如何循环这个,例如定义次数(即60次),以控制大量引用不同单元格的透视表

该计划将有一个员工列表,每个透视表将显示与该员工相关的数据,但员工列表将是动态的

编辑: 请看我试图实现的形象;


最终目标是设置分页符,并快速刷新和打印员工评估的个人技能水平。

查看您的图像,这似乎是一个

您需要用户及其技能的列表。您已决定这需要多个数据透视表。我建议使用多列数据透视表,用户之间有一个空行:

除了关闭“名称”的小计外,您还需要“在每个项目标签后插入空行”和“在组顶部显示小计”:


(顺便说一句,当从多个数据透视表(尤其是使用同一数据透视缓存的数据透视表)工作时,非常有助于减少重复计算!)

数据透视表是否位于不同的工作表上?如果您创建了一个关于您如何尝试实现目标以及哪些不起作用的数据透视表,我们可以帮助您更轻松地完成任务。现在,您要求我们为您编写循环代码,并且只提供模糊的规范,在这些规范中,我们可能无法了解您工作手册的详细信息。您是否考虑过使用切片器解决您的任务?请参阅[您是否考虑过使用两个数组,一个是单元格(
数组(“D1:D2”、“F1:F2”、“G1、G7”)
,等等),另一个是相应的数据透视表(
数组(“数据透视表2”、“数据透视表3”、“数据透视表1的副本”)
,等等)?从逻辑上讲,这就是我正在努力解决的问题,我的代码适用于一个数据透视表,但我甚至不知道如何开始实现一个循环,就像通常的Dim i as Integer一样,用于i=1到3个单元格(i,1).Value=100下一步我似乎不适合这项工作,但我希望将每个员工分成自己的页面,以便所有60个都可以在一张单独的表格中打印出来。支持日期:我刚刚注意到“在每个项目后插入分页符”复选框。肯定要简单得多一个我正在做的!@deanchon您可能还会发现自定义的数字格式(例如,
[=4]“已训练”[=2]“正在训练”[=0]“未训练”
)对显示文本值而不是数字很有用-然后播放(如果需要)发布一个关于这个的新问题?谢谢你的小提示!我也不知道这是可能的..非常有用,谢谢你的帮助:)