【问题标题】:VBA: lists group items of a PivotTable reportVBA:列出数据透视表的组项
【发布时间】:2013-05-18 11:17:51
【问题描述】:

如何使用 VBA 获取数据透视表中的分组项目列表?

例如,来自http://office.microsoft.com/en-us/excel-help/group-items-in-a-pivottable-report-HP010175903.aspx#BMgroup_selected_items

我怎样才能得到

布坎南

  • 7/16/2009
  • 7/23/2009
  • 8/9/2009
  • 等等。

谢谢

【问题讨论】:

    标签: vba pivot-table


    【解决方案1】:

    我一直想知道ChildItems 是什么,当我看到你的问题时,我想到了...

    Sub GetGroupedItems()
    Dim pt As Excel.PivotTable
    Dim ptField As Excel.PivotField
    Dim ptItem As Excel.PivotItem
    Dim ptChildItem As Excel.PivotItem
    
    Set pt = ActiveSheet.PivotTables(1)
    For Each ptField In pt.PivotFields
        For Each ptItem In ptField.PivotItems
            If ptItem.ChildItems.Count > 0 Then
                Debug.Print ptItem.Name
                For Each ptChildItem In ptItem.ChildItems
                    Debug.Print ptChildItem.Name
                Next ptChildItem
            End If
        Next ptItem
    Next ptField
    End Sub
    

    这会将任何分组项目及其子项目的名称打印到即时窗口。

    【讨论】:

    • 感谢您的回复!我不知道为什么,但 ptItem.ChildItems.Count 总是返回 0 ...。相反,如果我检查 ptItem.RecordCount 我得到正确数量的子项目有什么建议吗?谢谢
    • 我敢打赌这是因为在我的测试中子项是可见的。他们是在你的案子上,还是你取消了未分组的字段?
    • 我回到电脑前,我在之前的评论中的猜测是错误的。无论原始未分组字段是否可见,此代码都适用于我。为了得到更好的答案,你应该更充实你的问题,以便有人可以复制你正在做的事情。
    • @DougGlancy 我遇到了同样的问题 - Count 显示 0 和 RecordCount 显示正确的数字。因此,上面的代码没有打印任何内容,因为Count 为 0。当您说子项对您可见时,您是什么意思?可见,因为它们没有被过滤?抱歉,如果不清楚。如果有帮助,我可以向您发送一些我遇到的测试数据。谢谢!
    • 有人发现ChildItems 显示为 0 吗?
    猜你喜欢
    • 2012-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多