首页 > 解决方案 > 将数据从数据透视表提取到 VBA 中的数组(Excel)

问题描述

我正在尝试从数据透视表中获取数据,在 VBA 的数组中使用它,然后打印它。我是 VBA 的新手,我看过一些教程,但我实际上无法理解。

我试过用“DataBodyRange”引用我的列的范围,但我总是得到不同的错误。“Sheet4”是我的“PivotTable1”所在的工作表。我需要列中的所有数据。

Public Sub ReadToArray()
    'Range
    Dim rg As Range
    Set rg = Worksheets("Sheet4").pt("PivotTable1").DataBodyRange

    'Dynamic Array
     Dim Done As Variant
     Done = rg.Value

    'Array Values
     Debug.Print "i", "Value"
     Dim i As Long
     For i = LBound(Done) To UBound(Done)
         Debug.Print i, Done(i)
     Next i
 End Sub

最终结果是我想打印出整列的值并在之后使用它们。

标签: excelvbapivot-tableexcel-2007

解决方案


所以我可以看到导致这种情况的一些问题。首先,要在工作表中引用数据透视表,您.pivottables()不需要.pt().

接下来,将数组设置为具有像这样的范围内的值将为您提供一个二维数组,因此您需要在二维中循环遍历它以获取所有值。我使用第二个迭代器 j 添加了一个嵌套循环:

Public Sub ReadToArray()

     Dim pt As PivotTable
     Dim rg As Range
     Set pt = Worksheets("Sheet4").PivotTables("PivotTable1")

     Set rg = pt.DataBodyRange

     Dim Done As Variant

     Done = rg.Value

     Debug.Print "i", "Value"
     Dim i As Long, j As Long

     For i = LBound(Done, 1) To UBound(Done, 1)
        For j = LBound(Done, 2) To UBound(Done, 2)
            Debug.Print i & ", " & j & ", " & Done(i, j)
        Next j
     Next i

 End Sub

推荐阅读