ピボットテーブル作成とフィールド配置するマクロ
を示す。
■Excel-VBA ピボットテーブル作成とフィールド配置するマクロ
Sub sample46()
'ω'ピボットテーブル作成
Dim pvt As PivotTable
Dim pvtData As Range
'ω'元データを変数に格納
Set pvtData = ActiveSheet.Range("A1").CurrentRegion
'ω'ピボットテーブルを作成するシートを作成
With Worksheets.Add(After:=Worksheets(Worksheets.Count))
.Name = "Psheet"
End With
'ω'ピボットテーブルの作成
Set pvt = _
ActiveWorkbook.PivotCaches.Add( _
SourceType:=xlDatabase, _
SourceData:=pvtData). _
CreatePivotTable(TableDestination:=Range("A3"), TableName:="ピボットテーブル")
'ω'フィールドの配置
With pvt
.PivotFields("部品名称").Orientation = xlRowField
.PivotFields("部品番号").Orientation = xlRowField
.PivotFields("DD名目").Orientation = xlRowField
.PivotFields("DD状態").Orientation = xlRowField
.PivotFields("格納場所").Orientation = xlRowField
.PivotFields("DRD番").Orientation = xlColumnField
With .PivotFields("計画数量")
.Orientation = xlDataField
.Function = xlSum
.Caption = "合計 / 計画数量"
End With
End With
'ω'不要行非表示,右クリック→フィールドの設定→なし
Worksheets("Psheet").Activate
ActiveSheet.PivotTables("ピボットテーブル").PivotFields("部品名称").Subtotals = _
Array(False, False, False, False, False, False, False, False, False, False, False, False)
ActiveSheet.PivotTables("ピボットテーブル").PivotFields("部品番号").Subtotals = _
Array(False, False, False, False, False, False, False, False, False, False, False, False)
ActiveSheet.PivotTables("ピボットテーブル").PivotFields("DD名目").Subtotals = _
Array(False, False, False, False, False, False, False, False, False, False, False, False)
ActiveSheet.PivotTables("ピボットテーブル").PivotFields("DD状態").Subtotals = _
Array(False, False, False, False, False, False, False, False, False, False, False, False)
Application.CommandBars("PivotTable").Visible = False 'ω'ピボットテーブルツールバーの消去
End Sub
※[3.~4.] 変数宣言。※[7.] 元データを変数に格納。
※[10.~12.] ピボットテーブルを作成するシートを作成。
※[15.~19.] ピボットテーブルを作成。
※[22.~36.] 項目をピボットテーブルの
フィールドに配置。
※[39.~47.] 不要行を非表示。
※[49.] ピボットテーブルツールバーの消去。
■マクロ実行対象
ワークブック「部品データ_191128.xlsx」■マクロ実行結果
実行すると、ピボットテーブルが作成され、項目の値がフィールドに配置される。
■あとがき
今回はExcel VBAマクロ。ピボットテーブル作成とフィールド配置するマクロ
を示した。
ピボットテーブルは
「ある項目の使用数量合計はいくつか」
など複数項目の数値分析など
したい場合に使う。
定型作業でピボットテーブルを作っている人は
VBAで記述すると作業時間を短縮できる。
コードの先頭行に
Option VBASupport 1を記述してLibreOffice Basicでも使えるか試したが
エラーがでて使えなかった。
以上。

