VBAで
・ピボットテーブルを作成
できます!
VBAコード
ここでは例として、
・シート「sample」のセル「B2」から続く一連の範囲の表のデータを使用して
・シート「pivot」にピボットテーブルを作成
します。
Option Explicit
Sub sample()
Dim sorceDataSheet As Worksheet
Dim pivotSheetName As String
Dim startRange As String
Dim pivotStartRange As String
Dim sheet As Worksheet
Dim pivotSheet As Worksheet
Dim sorceData As Range
Dim pivotCache As pivotCache
Dim pivotTable As pivotTable
'ピボットテーブルのデータ(表)が存在するシート
Set sorceDataSheet = Worksheets("sample")
'ピボットテーブルを作成するシート名
pivotSheetName = "pivot"
'データ(表)の開始セル
startRange = "B2"
'ピボットテーブルの開始セル
pivotStartRange = "B2"
'既に「ピボットテーブルを作成するシート」が存在する場合は削除
For Each sheet In ThisWorkbook.Worksheets
If sheet.Name = pivotSheetName Then
'確認メッセージを非表示
Application.DisplayAlerts = False
'シート削除
Worksheets(pivotSheetName).Delete
'確認メッセージを表示
Application.DisplayAlerts = True
End If
Next
'「ピボットテーブルを作成するシート」を新規作成
Set pivotSheet = Worksheets.Add(After:=Worksheets(Worksheets.Count))
pivotSheet.Name = pivotSheetName
'ピボットテーブルのデータ(表)の範囲を取得
Set sorceData = sorceDataSheet.Range(startRange).CurrentRegion
'ピボットキャッシュを作成
Set pivotCache = ThisWorkbook.PivotCaches.Create(xlDatabase, sorceData)
'ピボットテーブルを作成
Set pivotTable = pivotCache.CreatePivotTable(pivotSheet.Range(pivotStartRange))
'ピボットテーブルに各フィールド等を設定
With pivotTable
'「行」フィールドを設定
.PivotFields("担当者").Orientation = xlRowField
'「列」フィールドを設定
.PivotFields("売上月").Orientation = xlColumnField
'「データ」フィールドを設定
.PivotFields("売上金額").Orientation = xlDataField
'行の総計を非表示
.RowGrand = False
'ピボットテーブル名を設定
.Name = "サンプルピボット"
End With
End Sub
実行結果
ピボットテーブルを作成できました。
参考①
作成済みのピボットテーブルを更新することもできます。
詳細は以下の記事をご確認ください。
参考②
作成済みのピボットテーブルにスライサーを作成することもできます。
詳細は以下の記事をご確認ください。
参考③
上記で使用した以下の詳細は、公式サイトをご確認ください。
●「Rangeオブジェクト」の「CurrentRegion」プロパティ
●「Workbookオブジェクト」の「PivotCaches」メソッド
●「PivotCachesコレクション(オブジェクト)」の「Create」メソッド
●「PivotCacheオブジェクト」の「CreatePivotTable」メソッド
●「PivotTableオブジェクト」の各プロパティ