我知道我可以使用以下选项pivot table
VBA
中选择特定列:
pt.PivotSelect "Costs Alternative['1']", xlDataOnly, True
Set rng = Selection
现在,这有点令人讨厌,并不像直接进行那样快速和有弹性:
Set rng = pt.PivotFields("Alternative").PivotFields("1").PivotItems("Costs").DataRange
我的数据透视表大致如下:
+-------+-------------+--------+
| | Alternative | Values |
| | 1 | |
| Price | ft | Costs |
+-------+-------------+--------+
| 6.58 | 6.00 | 39.48 |
| 2.00 | 2.00 | 4.00 |
| 0.30 | 6.00 | 1.80 |
| Total | 14.00 | 45.28 |
+-------+-------------+--------+
请注意,数据中只列出了一个Alternative
,但在我的实际支点中还有更多替代方案。
有没有办法引用与上面类似的数据结果值单元?
答案 0 :(得分:0)
这里有一堆测试代码,用于识别数据透视表中的范围
它就是这样。选择每个范围,以便在工作表上显示范围
某些范围是单个单元格,因此.Select可以替换为.Value
只需使用F8键执行代码,然后观察数据透视表中的不同范围。
Sub pivot()
Dim piv As pivotTable
Set piv = ActiveSheet.PivotTables("PivotTable3")
piv.TableRange1.Select
piv.TableRange2.Select
piv.DataBodyRange.Select
piv.RowRange.Select
piv.ColumnRange.Select
piv.PageRange.Select
piv.PageRangeCells.Select
Dim aaa As Variant
aaa = piv.DataBodyRange.Value ' array
aaa = piv.DataBodyRange.Value2 ' array
aaa = piv.DataBodyRange.Formula ' array
piv.DataBodyRange.PivotField.LabelRange.Select
piv.DataBodyRange.PivotField.DataRange.Select
piv.DataBodyRange.Next.PivotField.LabelRange.Select
piv.DataBodyRange.Next.PivotField.DataRange.Select
piv.DataBodyRange.PivotItem.LabelRange.Select
piv.DataBodyRange.PivotItem.DataRange.Select
piv.PivotFields("Price").LabelRange.Select
piv.PivotFields("Price").DataRange.Select
piv.PivotFields("ft").LabelRange.Select
piv.PivotFields("ft").DataRange.Select
piv.PivotFields("Costs").LabelRange.Select
piv.PivotFields("Costs").DataRange.Select
End Sub