你可以通过列索引来创build一个数据透视表,而不是VBA中的列名

我有一个由400行和35列组成的表,并做了一个VBA脚本,使一个数据透视表成功地比较了2列和12个独立的列。

在生成数据透视表时,使用列标题(以避免混淆)。 我是VBA新手,这就是我所做的所有事情

ActiveCell.Select Range("AA3").Select Selection.CurrentRegion.Select ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ "Practitioners!R3C1:R246C27", Version:=xlPivotTableVersion15). _ CreatePivotTable TableDestination:="Practitioners!R3C29", TableName:= _ "PivotTable8", DefaultVersion:=xlPivotTableVersion15 Sheets("Practitioners").Select Cells(3, 29).Select ActiveWorkbook.ShowPivotTableFieldList = False With ActiveSheet.PivotTables("PivotTable8").PivotFields("Capability") .Orientation = xlRowField .Position = 1 End With With ActiveSheet.PivotTables("PivotTable8").PivotFields("Sub-Capability") .Orientation = xlRowField .Position = 2 End With ActiveSheet.PivotTables("PivotTable8").AddDataField ActiveSheet.PivotTables( _ "PivotTable8").PivotFields("Grade"), "Count of Grade", xlCount ActiveSheet.PivotTables("PivotTable8").AddDataField ActiveSheet.PivotTables( _ "PivotTable8").PivotFields("06-Feb-2017"), "Count of 06-Feb-2017", xlCount 

但我的列标题将每周更改,并更改标题的名称意味着VBA代码将无法正常工作,因为它不再是“2017年2月6日”。

我试着在我的代码中对绝对单元格进行引用,但是出现了一个错误

运行时错误'1004,无法获取数据透视表类的PivotFields属性

有没有办法将数据PivotFields作为绝对单元格引用(即B3)?

尝试下面的代码(解释在代码注释内)。

您需要确保单元格“B3”的格式与PivotTable中的格式相同,否则您将在下面一行中获得运行时错误:

 .AddDataField PvtTbl.PivotFields(PvtFlfVal), "Count of " & PvtFlfVal, xlCount 

 Option Explicit Sub DynamicPivotTableCountField() Dim PvtTbl As Pivottable Dim PvtFlfVal ' As String ' set the Pivot Table, replace "Sheet1" with your sheet's name (don't use ActiveSheet) Set PvtTbl = Worksheets("Practitioners").PivotTables("PivotTable8") ' get the value from Cell B3, make sure it's formatted the way you need it for the Pivot Table later PvtFlfVal = Format(Worksheets("Practitioners").Range("B3").Value, "dd-mmm-yyyy") With PvtTbl .AddDataField PvtTbl.PivotFields(PvtFlfVal), "Count of " & PvtFlfVal, xlCount End With End Sub