2017-02-15 7 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のコードが動作しないことを意味しますもはや "06-Feb-2017"ではありません。

は、私は私のコードで絶対セルへの参照を作ってみましたが、エラーを思い付いた

実行時エラー「1004、 ピボットテーブルクラスのPivotFieldsプロパティを取得できません

絶対セル参照(すなわちB3)としてPivotFieldsを参照する方法はありますか?

答えて

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'セット - アップ?ワークシート名は何ですか? 'Worksheets'とPivotTable'の名前がコード –

+0

と一致することを確認してください。上記のコードとセットアップを更新しました。 – alex