TOP > カテゴリ > Excel >

ピボットテーブルの作成/操作 [ExcelのVBA]

この記事は「ピボットテーブル、おすすめピボットテーブルの使い方」の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の作成
ワークブックのイベント

[その他]
その他の操作まとめ

エクセル講座のクイックリンク

ホーム 新機能 基本(初級) 基本(中級) 基本(上級) 関数 マクロ VBA TIPS





関連記事



公開日:2015年07月22日 最終更新日:2015年07月23日
記事NO:01229