将数据从数据透视表中提取到VBA中的数组(Excel)

时间:2019-05-28 11:51:07

标签: excel vba pivot-table excel-2007

我正在尝试从数据透视表中获取数据,在VBA的Array中使用它,然后进行打印。我是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

最终结果是我要打印出整个列的值,然后再使用它们。

1 个答案:

答案 0 :(得分:1)

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

接下来,将数组设置为具有这样范围内的值将为您提供2D数组,因此您需要在二维中循环遍历它以获取所有值。我使用第二个迭代器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