使用Range而不是PivotSelect - >设置rng =选择

时间:2017-08-16 13:46:34

标签: vba excel-vba pivot excel

我知道我可以使用以下选项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,但在我的实际支点中还有更多替代方案。

有没有办法引用与上面类似的数据结果值单元?

1 个答案:

答案 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