ピボットテーブルの作成/操作 [ExcelのVBA]
事前準備
図のようにエクセルに値を入力してください。
データを入力するのが大変な方は下記からダウンロードできます。
excel_vba_55.xlsx 11.1 KB (11,408 バイト)
ピボットテーブルを作成する
Excel2007以降
次のコードはExcel2007,Excel2010,Excel2013で動作可能です。Excel2016以降は確認していませんが恐らく動作するはずです。
Private Sub CommandButton3_Click() Dim ws As Worksheet Dim pvc As PivotCache Dim pvt As PivotTable ' シートの追加 Set ws = Sheets.Add ' コレクションにピボットテーブルの新しいキャッシュを追加 Set pvc = ActiveWorkbook.PivotCaches.Create( _ SourceType:=xlDatabase, _ SourceData:="Sheet1!B2:G15", _ Version:=xlPivotTableVersion15) ' SourceDataは「テーブル1」と名前でも可能 'Set pvc = ActiveWorkbook.PivotCaches.Create( _ ' SourceType:=xlDatabase, _ ' SourceData:="テーブル1", _ ' Version:=xlPivotTableVersion15) ' ピボットテーブルの作成 Set pvt = pvc.CreatePivotTable( _ TableDestination:=ws.Name & "!R3C1", _ TableName:="ピボットテーブル1", _ DefaultVersion:=xlPivotTableVersion15) ' フィールドの選択 With pvt.PivotFields("役職") .Orientation = xlRowField .Position = 1 End With ' フィールドの選択 With pvt.PivotFields("社員氏名") .Orientation = xlRowField .Position = 2 End With ' データフィールドの選択 pvt.AddDataField pvt.PivotFields("標準報酬"), "合計 / 標準報酬", xlSum End Sub
[結果]
Excel2003以降
このコードはExcel2003以降で動作しますが、装飾がないのでシンプルな表示となります。
Private Sub CommandButton1_Click() Dim ws As Worksheet Dim pvc As PivotCache Dim pvt As PivotTable ' シートの追加 ws = Sheets.Add ' コレクションにピボットテーブルの新しいキャッシュを追加 Set pvc = ActiveWorkbook.PivotCaches.Add( _ SourceType:=xlDatabase, _ SourceData:="Sheet1!B2:G15") ' ピボットテーブルの作成 Set pvt = pvc.CreatePivotTable( _ TableDestination:=ws.Name & "!R3C1", _ TableName:="ピボットテーブル1", _ DefaultVersion:=xlPivotTableVersion10) ' フィールドの選択 With pvt.PivotFields("役職") .Orientation = xlRowField .Position = 1 End With ' フィールドの選択 With pvt.PivotFields("社員氏名") .Orientation = xlRowField .Position = 2 End With ' データフィールドの選択 pvt.AddDataField pvt.PivotFields("標準報酬"), "合計 / 標準報酬", xlSum End Sub
[結果]
ピボットグラフを作成する
ピボットグラフはExcel2007から導入されました。
Private Sub CommandButton4_Click() ' Excel2007/Excel2010の場合 'ActiveSheet.Shapes.AddChart(xlColumnClustered).Select 'ActiveChart.SetSourceData Source:=Range(ActiveSheet.Name & "!$A$3:$C$3") ' Excel2013/Excel2016以降の場合 ActiveSheet.Shapes.AddChart2(-1, xlColumnClustered).Select ActiveChart.SetSourceData Source:=Range(ActiveSheet.Name & "!$A$3:$C$3") End Sub
[結果]
※グラフの使い方は「グラフの作成/操作」をご覧ください。
ピボットテーブルの操作
スライサーを追加する
スライサーはExcel2010から導入されました。
Private Sub CommandButton5_Click() Dim sc As SlicerCache ' スライサーキャッシュの作成 Set sc = ActiveWorkbook.SlicerCaches.Add2( _ Source:=ActiveSheet.PivotTables("ピボットテーブル1"), _ SourceField:="社員氏名") ' スライサーの作成 sc.Slicers.Add _ SlicerDestination:=ActiveSheet, _ Name:="社員氏名", _ Caption:="社員氏名", _ Top:=75.75, _ Left:=222.75, _ Width:=144, _ Height:=187.5 End Sub
[結果]
タイムラインを追加する
タイムラインはExcel2013から導入されました。
Private Sub CommandButton6_Click() Dim sc As SlicerCache ' スライサーキャッシュの作成 Set sc = ActiveWorkbook.SlicerCaches.Add2( _ Source:=ActiveSheet.PivotTables("ピボットテーブル1"), _ SourceField:="入社年月日", _ SlicerCacheType:=xlTimeline) ' タイムラインの作成 sc.Slicers.Add _ SlicerDestination:=ActiveSheet, _ Name:="入社年月日", _ Caption:="入社年月日", _ Top:=123.75, _ Left:=163.5, _ Width:=262.5, _ Height:=111.75 End Sub
[結果]
VBAの固有操作
[セルの操作]
セルの値/計算式を設定する
セルのフォントを設定する
セルの背景色/網掛けを設定する
セルの文字配置を設定する
セルの表示形式を設定する
セルに罫線を設定する
セルの選択/コピー/貼り付け/切り取り/削除/クリア
セルの結合/結合の解除をする
セルにコメントを追加/削除する
シートの保護とセルのロック解除をする
セルの値をソートする
[テーブル/グラフ/ピボットテーブル]
テーブルの作成/操作
グラフの作成/操作
ピボットテーブルの作成/操作
[ワークシート]
シートの追加/移動/コピー/削除/表示/印刷
ワークシートのイベント
[ワークブック]
ブックを開く/追加/上書き/名前保存/PDFの作成
ワークブックのイベント
[その他]
その他の操作まとめ