【问题标题】:Reference pivot table by name Excel 2010按名称引用数据透视表 Excel 2010
【发布时间】:2016-06-14 12:04:02
【问题描述】:

我的任务是用几十个数据透视表重新组织一个极其凌乱的 Excel 文件。重组的一部分将涉及在同一张表上和新表上移动数据透视表,以便为它们随着时间的推移而增长创造空间。但是,使用 getpivotdata() 函数的数据透视表引用被硬编码到数据透视表的位置。

我一直在尝试通过使用自定义函数来接受数据透视表的名称并返回其位置来解决此问题,以便在 getpivotdata() 函数中使用,以允许我在不引用数据的情况下移动数据透视表桌子坏了。我尝试返回位置的字符串版本和指定位置的范围对象,但这两者都给了我参考错误。到目前为止,我最成功的函数返回了一个可透视的对象,虽然它没有给我一个引用错误,但无论我尝试什么,它都只返回 0 作为数据

这是当前代码:

Public Function pivotNameToLoc(PTName As String) As PivotTable
Dim WS As Worksheet, PT As PivotTable

For Each WS In ActiveWorkbook.Worksheets
    For Each PT In WS.PivotTables
        If PT.Name = PTName Then
            pivotNameToLoc = PivotTable
            Exit Function
        End If
    Next PT
Next WS
End Function

这是在单元格公式中调用函数的方式

=GETPIVOTDATA("Data field",pivotNameToLoc("Name of table"),"other","fields")

【问题讨论】:

    标签: vba excel excel-formula


    【解决方案1】:

    你需要返回一个范围:

    Public Function pivotNameToLoc(PTName As String) As Range
    Dim WS As Worksheet, PT As PivotTable
    
    For Each WS In ActiveWorkbook.Worksheets
        For Each PT In WS.PivotTables
            If PT.Name = PTName Then
                Set pivotNameToLoc = PT.TableRange1.Cells(1)
                Exit Function
            End If
        Next PT
    Next WS
    End Function
    

    【讨论】:

    • 谢谢!我之前使用范围对象的尝试使用了我认为错误的 TableRange 属性。
    猜你喜欢
    • 2015-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-17
    相关资源
    最近更新 更多