【问题标题】:VBA refer to PivotTable column by its SourceNameVBA 通过其 SourceName 引用数据透视表列
【发布时间】:2015-12-04 00:45:01
【问题描述】:

如何通过.SourceName 选择数据透视表列?或者如何根据 ActiveCell.Column 获取 PivotTable 列的 SourceName?我需要类似的东西:

ActiveSheet.PivotTables(1).SourceName("MyColumn").Select

我需要它的原因是因为 pf.Caption 动态变化(即由于国家/地区设置),而 .SourceName 始终相同。

【问题讨论】:

  • 类似pt.PivotFields("Years").PivotItems("2004").DataRange.Select。 Jon Peltier 在引用数据透视表的不同部分上有一个很棒的页面。 peltiertech.com/referencing-pivot-table-ranges-in-vba
  • 使用 VBA PivotField 添加到具有默认 SUM 的表中。如果你有英文 Excel,那么它的名字(标题)是Sum of MyColumn。另一个说 Transilvania 语言或(无论其他)的同一宏的用户将拥有Asdf of MyColumn。 Jon 的代码需要使用标题名称pt.PivotFields("Years").PivotItems("Sum of 2004").DataRange.Select。它适用于标题名称,而不适用于 SourceName。
  • 可能基于 ActiveCell - pt.PivotFields(ActiveCell.PivotItem.Caption).DataRange.Select。如果您在数据透视表(或 ActiveCell)中的单元格上添加 Watch 并查看 PivotCell、Pivo​​tField、Pivo​​tItem 和 PivotTable 的列表,您应该能够让它做您想做的事情。
  • 如果我知道 SourceName 而我不知道 Caption 名称怎么办。有没有办法引用列?

标签: vba excel pivot-table


【解决方案1】:

我觉得我现在很困惑,但想发布代码,因为它可能会有所帮助。

因此,如果您选择源数据,它会找到从中创建的数据透视表,它会列出该表中的数据透视字段,您可以访问数据透视字段中的数据透视表,等等。

有什么帮助吗?

Sub FindPivots()

    Dim MyData As Range
    Dim MySourceData As String
    Dim wrkSht As Worksheet
    Dim pt As PivotTable
    Dim pvtfld As PivotField
    Dim pvtitm As PivotItem

    Set MyData = Selection
    MySourceData = IIf(InStr(MyData.Parent.Name, " ") > 0, _
        "'" & MyData.Parent.Name & "'!", _
        MyData.Parent.Name & "!") & MyData.Address(ReferenceStyle:=xlR1C1)

    For Each wrkSht In ThisWorkbook.Worksheets
        For Each pt In wrkSht.PivotTables
            If pt.SourceData = MySourceData Then
                For Each pvtfld In pt.PivotFields
                    Debug.Print pvtfld.SourceName & " : "
                    'For Each pvtitm In pvtfld.PivotItems
                        Debug.Print pvtfld.SourceName
                    'Next pvtitm
                Next pvtfld
            End If
        Next pt
    Next wrkSht

End Sub

【讨论】:

    猜你喜欢
    • 2015-10-22
    • 1970-01-01
    • 2016-12-24
    • 1970-01-01
    • 1970-01-01
    • 2012-06-19
    • 2021-07-01
    • 1970-01-01
    相关资源
    最近更新 更多