【VBA】ピボットテーブルを作成する

VBAで
 ・ピボットテーブルを作成
できます!

ピボットテーブル
ピボットテーブル
PR

VBAコード

ここでは例として、
 ・シート「sample」のセル「B2」から続く一連の範囲の表のデータを使用して
 ・シート「pivot」にピボットテーブルを作成
します。

シート「sample」のセル「B2」から続く一連の範囲の表のデータ
シート「sample」のセル「B2」から続く一連の範囲の表のデータ
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

以下を指定します(16~22行目)。
※状況に応じて任意値を指定してください。

・ピボットテーブルのデータ(表)が存在するシート
・ピボットテーブルを作成するシート名
・データ(表)の開始セル
・ピボットテーブルの開始セル

既に「ピボットテーブルを作成するシート」が存在する場合は削除します(25~34行目)。

ピボットテーブルのデータ(表)の範囲を取得します(41行目)。
※「Rangeオブジェクト」の「CurrentRegion」プロパティにより、データ(表)の範囲を示す「Rangeオブジェクト」を取得します。

ピボットキャッシュを作成します(43行目)。
※ピボットテーブルを作成するために必要なものです。
※「Workbookオブジェクト」の「PivotCaches」メソッドにより、「PivotCachesコレクション(オブジェクト)」を取得します。
「PivotCachesコレクション(オブジェクト)」の「Create」メソッドにより、「PivotCacheオブジェクト」を取得します。

ピボットテーブルを作成します(45行目)。
※「PivotCacheオブジェクト」の「CreatePivotTable」メソッドにより、「PivotTableオブジェクト」を取得します。

ピボットテーブルに各フィールド等を設定します(47~58行目)。
※「PivotTableオブジェクト」の各プロパティを設定します。
※上記では以下を設定しています
 「行」フィールド   :データ(表)の列「担当者」
 「列」フィールド   :データ(表)の列「売上月」
 「データ」フィールド :データ(表)の列「売上金額」


※上記では「行の総計」を「非表示」にしています。
※上記では「ピボットテーブル名」を「サンプルピボット」としています。

PR

実行結果

ピボットテーブルを作成できました。

実行結果①(作成されたピボットテーブル)
実行結果①(作成されたピボットテーブル)
実行結果②(行の総計が「非表示」、ピボットテーブル名が「サンプルピボット」)
実行結果②(行の総計が「非表示」、ピボットテーブル名が「サンプルピボット」)
PR

参考①

作成済みのピボットテーブルを更新することもできます。

詳細は以下の記事をご確認ください。

PR

参考②

作成済みのピボットテーブルにスライサーを作成することもできます。

詳細は以下の記事をご確認ください。

PR

参考③

上記で使用した以下の詳細は、公式サイトをご確認ください。

●「Rangeオブジェクト」の「CurrentRegion」プロパティ


●「Workbookオブジェクト」の「PivotCaches」メソッド


●「PivotCachesコレクション(オブジェクト)」の「Create」メソッド

●「PivotCacheオブジェクト」の「CreatePivotTable」メソッド


「PivotTableオブジェクト」の各プロパティ