ピボットテーブルの範囲を可変にしたい
ピボットテーブルのマクロを作っています。
「発注データ」というシートの隣に新しいシートを追加し
そこにピボットテーブルを作成するという内容です。
シート名の「発注データ~」と参照範囲「R1C1:R477C8」の部分が毎回変わるため
(列は固定で行数が増減)それに対応した記述にしたいのですが
どのように変えたらいいのでしょうか?
アドバイスよろしくお願いします。
以下マクロ記録で作成してみました。
Sub pivot()
' pivot Macro
Sheets.Add
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"発注データ20170202!R1C1:R477C8", Version:=xlPivotTableVersion15). _
CreatePivotTable TableDestination:="Sheet1!R3C1", TableName:="ピボットテーブル1" _
, DefaultVersion:=xlPivotTableVersion15
Sheets("Sheet1").Select
Cells(3, 1).Select
With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("課")
.Orientation = xlColumnField
.Position = 1
End With
With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("品番")
.Orientation = xlRowField
.Position = 1
End With
With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("製品コード")
.Orientation = xlRowField
.Position = 2
End With
With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("製品名1")
.Orientation = xlRowField
.Position = 3
End With
With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("製品名2")
.Orientation = xlRowField
.Position = 4
End With
With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("棚番号")
.Orientation = xlRowField
.Position = 5
End With
With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("単価")
.Orientation = xlRowField
.Position = 6
End With
ActiveSheet.PivotTables("ピボットテーブル1").AddDataField ActiveSheet.PivotTables( _
"ピボットテーブル1").PivotFields("数量"), "合計 / 数量", xlSum
ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("品番").Subtotals = Array( _
False, False, False, False, False, False, False, False, False, False, False, False)
ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("製品コード").Subtotals = Array _
(False, False, False, False, False, False, False, False, False, False, False, False)
ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("製品名1").Subtotals = Array( _
False, False, False, False, False, False, False, False, False, False, False, False)
ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("製品名2").Subtotals = Array( _
False, False, False, False, False, False, False, False, False, False, False, False)
ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("箱番").Subtotals = Array( _
False, False, False, False, False, False, False, False, False, False, False, False)
ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("単価").Subtotals = Array( _
False, False, False, False, False, False, False, False, False, False, False, False)
ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("数量").Subtotals = Array( _
False, False, False, False, False, False, False, False, False, False, False, False)
ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("課").Subtotals = Array( _
False, False, False, False, False, False, False, False, False, False, False, False)
ActiveSheet.PivotTables("ピボットテーブル1").RowAxisLayout xlTabularRow
End Sub
お礼
エクセルは2003-SP3です。 マクロの記録で 教えていただいたように操作したら 同じコードが出来上がりました。 どうもありがとうございました。