定位 Excel 2007 数据透视表

3

有人能告诉我如何在工作簿(或工作表)中找到所有的数据透视表吗?在某些情况下,数据透视表可能会被隐藏或难以在非常大的Excel表格中找到。如果我至少可以获取数据透视表所在的单元格地址或范围,那就太好了。

谢谢。

2个回答

6

这应该对你有用。它会将结果打印到“立即”窗口:

Sub FindPivotTables()
    Dim wst As Worksheet
    Dim pvt As PivotTable
    ' loop through all sheets and print name & address of all pivot tables
    For Each wst In ActiveWorkbook.Worksheets
        For Each pvt In wst.PivotTables
            Debug.Print wst.Name, pvt.TableRange2.Address, pvt.Name
        Next pvt
    Next wst
End Sub

0
每个工作表都应该公开一个PivotTables集合;您可以循环遍历每个工作表,查找具有.PivotTables.Count > 0的工作表,然后循环遍历该工作表上的PivotTables以找到您要查找的那个。
Sub Test()

    Dim pTable As pivotTable

    Dim ws As Worksheet

    For Each ws In ActiveWorkbook.Worksheets

        Dim pivotTableCount

        pivotTableCount = ws.PivotTables.Count

        If pivotTableCount > 0 Then

            For Each pTable In ws.PivotTables

                 Dim pivotTableName As String
                 pivotTableName = pTable.Name

                 Dim pivotTableTopLeftCell As String
                 pivotTableTopLeftCell = pTable.Location

            Next pTable 

        End If



    Next ws


End Sub

1
这段代码根本不起作用,也没有返回任何信息。此外,在循环中不应该一遍又一遍地进行声明。 - Rachel Hettinger
错过了复制粘贴错误(谢谢!);否则它工作得很好 - 实际上,除了 pivotTableCount 检查之外,我们的代码在循环方面是相同的。我想向 OP 展示两个东西:工作表循环和数据透视表集合,以及展示一些典型的属性。我希望有人愿意通过代码进行 F8,看看每个部分如何工作。您关于在循环中声明变量的观点是有趣的 - 它确实取决于情况。我喜欢在使用变量的地方附近声明变量以提高可读性和范围,特别是在更大的模块中。 - dash

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接