从数据透视 table 引用一系列列

Referencing a range of columns from a pivot table

我知道我可以引用数据透视表 table 中的所有列,包括来自 https://peltiertech.com/referencing-pivot-table-ranges-in-vba/ 的优秀教程中 pt.DataBodyRange.select 的总计。但是我想引用除前 3 列之外的所有列。这似乎没有出现在教程中。

到目前为止我所拥有的:我分别引用每一列,然后使用联合函数将它们组合起来,请参见下面的代码,其中 EmployeeID、StartDate、EndDate 是 Pivot Table 中的列标题,Total 是总计列。 这似乎工作正常,但我想知道是否可以在一行中执行而不必分别引用每一列然后执行范围联合

Dim EmployeeID As Range
    Dim StartDate As Range
    Dim EndDate As Range
    Dim Total As Range
    Dim Rg As Range
    Dim pt As PivotTable
    Dim TimeSheets() As Variant
    
    Set pt = shPivotTable.PivotTables("ptTimeSheets")
            
    With pt
        
        Set EmployeeID = .PivotFields("EmployeeID").DataRange
        Set StartDate = .PivotFields("StartDate").DataRange
        Set EndDate = .PivotFields("EndDate").DataRange
        Set Total = pt.RowRange.Offset(1, 6).Resize(pt.RowRange.Rows.count - 1)
        Debug.Print Total.Address
    End With
    Set Rg = Union(EmployeeID, StartDate, EndDate, Total)
    Debug.Print Rg.Address

您可以调整 DataBodyRange 的大小以删除前 3 列:

pv.DataBodyRange.Offset(0, 3).Resize(, pv.DataBodyRange.Columns.Count - 3)

您还可以使用开始和结束范围来创建范围:

Set rg = shPivotTable.Range(startRange,endRange)