【问题标题】:Locate excel 2007 Pivot table找到 excel 2007 数据透视表
【发布时间】:2011-12-14 20:13:24
【问题描述】:

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

谢谢。

【问题讨论】:

    标签: excel pivot-table locate


    【解决方案1】:

    这应该适合你。它将结果打印到立即窗口:

    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
    

    【讨论】:

      【解决方案2】:

      每个工作表都应该公开一个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
      

      【讨论】:

      • 此代码不起作用,它不返回任何信息。此外,声明不应在循环中一遍又一遍地完成。
      • 错过了复制粘贴错误(谢谢!);否则它工作正常 - 事实上,除了 pivotTableCount 检查之外,我们的代码在循环方面是相同的。我想向 OP 展示两件事;工作表循环和数据透视表集合,以及显示一些典型属性。我希望有人愿意通过代码 f8 来查看每一位是如何工作的。你关于在循环中声明变量的观点是一个有趣的观点 - 它真的可以依赖。我更喜欢在靠近我使用它们的位置声明变量以提高可读性和范围,尤其是在较大的模块中。
      猜你喜欢
      • 2010-11-28
      • 1970-01-01
      • 1970-01-01
      • 2015-05-07
      • 1970-01-01
      • 2011-11-17
      • 1970-01-01
      • 2010-10-14
      相关资源
      最近更新 更多