2013-07-19 15 views
0

我有一份报告,我正在构建包含数据透视表的表,其中的名称(即PivotTable1)在VBA代码中显式引用。使用公式检查数据透视表的名称是否存在使用公式

我想在工作簿本身包含一个基于公式的检查数据透视表存在(主要是检查用户没有更改表的名称或完全删除它)。

我用下面的变通检查表存在使用他们的名字:

=NOT(ISERROR(INDEX(INDIRECT("NameOfTable"),1,1)))) 

任何人都可以建议使用本机Excel函数枢轴类似的事情?

回答

0

创建VBA用户定义函数是一个选项吗?在这种情况下,我会建议

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

    ExistPivot = False 
    For Each WS In ActiveWorkbook.Worksheets 
     For Each PT In WS.PivotTables 
      If PT.Name = PTName Then 
       ExistPivot = True 
       Exit Function 
      End If 
     Next PT 
    Next WS 
End Function 

,并用它在工作表=ExistPivot("xxx"),结果将是TRUE或FALSE

+0

我希望只用本地函数作为我的团队中的VBA知识做不是很好。从淘网上看,似乎没有任何技巧可以做到,但UDF可能是前进的方向。 – AdamDynamic

+0

最接近的可能是使用'= GETPIVOTDATA()'函数(http://office.microsoft.com/zh-cn/excel-help/getpivotdata-function-HP010342556.aspx),它的名称是数据透视表作为第二个参数,但您还必须知道至少一个数据字段 - 这意味着只要透视表的设计始终相同,就可以使用此数据字段。 – MikeD