Excelマクロでピボットテーブルの作成とカスタマイズを自動化する方法

Visual Basic

Excelでデータを効率的に集計するためにピボットテーブルは非常に強力なツールですが、その作成や設定をマクロで自動化する方法について解説します。この記事では、特定のフィールドを行に配置し、日付のフォーマットを変更し、特定の設定を適用したピボットテーブルを作成するマクロの手順を紹介します。

ピボットテーブルをマクロで作成する方法

まずは、ピボットテーブルを自動で作成するための基本的なマクロを作成します。以下のコードは、アクティブシートから新しいシートにピボットテーブルを作成し、指定したフィールドを行に配置し、「可否」を合計する設定を行うものです。

Sub CreatePivotTable()
    Dim ws As Worksheet
    Dim pt As PivotTable
    Dim dataRange As Range
    Dim pivotSheet As Worksheet

    ' アクティブシートのデータ範囲を設定
    Set ws = ActiveSheet
    Set dataRange = ws.UsedRange

    ' 新しいシートを作成
    Set pivotSheet = ThisWorkbook.Sheets.Add
    pivotSheet.Name = "PivotSheet"

    ' ピボットテーブルの作成
    Set pt = pivotSheet.PivotTableWizard(SourceType:=xlDatabase, SourceData:=dataRange)

    ' フィールドを設定
    pt.AddFields RowFields:="国, 首都, エリア, 可否", DataFields:="可否"
    pt.PivotFields("可否").Function = xlSum
End Sub

このコードでは、PivotTableWizardを使ってピボットテーブルを作成し、指定されたフィールドを行に配置します。また、「可否」フィールドを合計(Sum)として設定しています。

日付のグループ解除とフォーマットの変更

次に、ピボットテーブルの中で日付の列をグループ解除し、表示形式を「yyyy/m/d」に変更する方法を説明します。日付フィールドを選択し、グループ解除を行うと、詳細な日付を表示できます。以下のコードはその手順を示しています。

Sub FormatDateField()
    Dim pt As PivotTable
    Set pt = ThisWorkbook.Sheets("PivotSheet").PivotTables(1)

    ' 日付フィールドをグループ解除
    pt.PivotFields("日付").ClearAllFilters
    pt.PivotFields("日付").NumberFormat = "yyyy/m/d"
End Sub

このコードは、ピボットテーブル内の日付フィールドを選択し、NumberFormatで表示形式を変更しています。

表形式の表示と小計の非表示

ピボットテーブルを「表形式で表示」し、小計を非表示にするためには、次のように設定を行います。

Sub FormatPivotTable()
    Dim pt As PivotTable
    Set pt = ThisWorkbook.Sheets("PivotSheet").PivotTables(1)

    ' 表形式で表示
    pt.TableStyle2 = "PivotStyleLight16"

    ' 小計を非表示に設定
    pt.RowGrand = False
    pt.ColumnGrand = False
End Sub

このコードでは、TableStyle2を使って表形式を適用し、RowGrandColumnGrandFalseに設定することで小計を非表示にしています。

まとめ

このように、Excelマクロを使用すると、ピボットテーブルを自動で作成し、必要な設定を簡単に適用できます。フィールドを指定した順番で配置し、日付の表示形式を変更し、表形式にして小計を非表示にするなど、作業の効率化が図れます。特に大規模なデータを扱う場合には、マクロを活用することで時間を大幅に短縮することができます。

マクロを活用して業務を効率化し、データ分析をスムーズに行えるようにしましょう。

コメント

タイトルとURLをコピーしました