2017-02-15 68 views
0

我有一個由400行和35列組成的表,並且創建了一個VBA腳本來創建一個數據透視表,併成功比較了2列與12個單獨的列。你可以根據列索引而不是VBA中的列名創建數據透視表

在生成數據透視表時,使用了列標題(以避免混淆)。我是新的使用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作爲絕對單元格引用(即B3)?

回答

3

請嘗試下面的代碼(解釋在代碼註釋內)。

你需要確保的單元格「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 
+0

不幸的是我收到另一個運行時錯誤1004:無法獲取您的密碼(設置PvtTbl ......)的第9行的工作表類的數據透視表屬性 – alex

+0

@alex你有沒有'PivotTable' SET- up?什麼是工作表名稱?確保'Worksheets'和PivotTable'的名稱匹配代碼 –

+0

我更新了我的代碼和上面的設置。 – alex