excel - 将数据从数据透视表提取到 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
最终结果是我想打印出整列的值并在之后使用它们。
解决方案
所以我可以看到导致这种情况的一些问题。首先,要在工作表中引用数据透视表,您.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
推荐阅读
- javascript - 将值传递给反应js中的onchange
- python - 如何使用 np.where 从 DataFrame 分配值
- arrays - Laravel:生成的带有循环的按钮(如何判断哪个是点击)
- generics - VHDL泛型的使用
- postgresql - PostgreSQL/PostGIS:ST_distance 查询应该只返回“最近”的结果
- java - 带有 JavaMailSender 的 Mockito
- php - 循环没有正确使用缓冲区
- ios - 在 swift (IOS) 中以编程方式导航
- php - PHPMailer 和 Angular 8
- php - 如何使用 php-curl 以“多部分”类型将文件上传到 GoogleDrive?