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

Fetching Data from PivotTable into Array in VBA (Excel)

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

我试过用 "DataBodyRange" 引用我的专栏范围,但我总是遇到不同的错误。 "Sheet4"是我的"PivotTable1"所在的sheet。我需要列中的所有数据。

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

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

所以我可以看到导致此问题的一些问题。首先,要在 sheet 中引用枢轴 table,您需要 .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