ピボットテーブル作成とフィールド配置するマクロ
を示す。
■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でも使えるか試したが
エラーがでて使えなかった。
以上。