从数据透视 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)
我知道我可以引用数据透视表 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)