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

Visual Basic

Excelでピボットテーブルを使ってデータを整理することは非常に便利ですが、手動で作成するのは時間がかかります。マクロを使えば、ピボットテーブルを新しいシートに自動で作成し、必要なフィールドや順番を設定することができます。本記事では、Excelマクロを使用してピボットテーブルを効率的に作成する方法を解説します。

ピボットテーブルを新規シートに作成する方法

ピボットテーブルを新しいシートに作成するには、まずVBA(Visual Basic for Applications)を使用して、データを元にピボットテーブルを自動で挿入します。以下のコードを使えば、新しいシートを作成し、そのシートにピボットテーブルを追加できます。

Sub CreatePivotTable()
    Dim ws As Worksheet
    Dim pivotWs As Worksheet
    Dim pivotTable As PivotTable
    Set ws = ThisWorkbook.Sheets("Sheet1") ' データがあるシート名を指定
    Set pivotWs = ThisWorkbook.Sheets.Add ' 新規シートを追加
    pivotWs.Name = "PivotTableSheet"
    Set pivotTable = pivotWs.PivotTableWizard(SourceType:=xlDatabase, SourceData:=ws.Range("A1:F100"))
End Sub

このコードを実行すると、新しいシートにピボットテーブルが作成されます。

フィールド順序の設定方法

次に、ピボットテーブルの行フィールドに順番を設定する方法を紹介します。例えば、「東京」「大阪」「京都」「広島」「北海道」の順に並べたい場合、VBAでフィールドを行に追加し、順番を指定することができます。

Sub SetFieldOrder()
    Dim pivotTable As PivotTable
    Set pivotTable = ActiveSheet.PivotTables(1)
    pivotTable.PivotFields("都市").Orientation = xlRowField
    pivotTable.PivotFields("都市").Position = 1
    ' 順番を設定
    pivotTable.PivotFields("都市").AutoSort xlAscending, "都市"
End Sub

このコードで、都市名の順番を指定した順序で表示できます。

関東フィールドを値エリアに追加する方法

次に、「関東」というフィールドを値エリアに追加する方法について説明します。以下のコードを使うことで、「関東」フィールドを自動的に値エリアに追加できます。

Sub AddFieldToValues()
    Dim pivotTable As PivotTable
    Set pivotTable = ActiveSheet.PivotTables(1)
    pivotTable.AddDataField pivotTable.PivotFields("関東"), "関東の販売数", xlSum
End Sub

このコードを実行すると、「関東」フィールドが値エリアに追加され、販売数が集計されます。

日付のグループ解除とフォーマットの設定

日付フィールドが複数列にグループ化されている場合、グループ解除して「yyyy/m/d」形式で表示する方法を説明します。以下のコードを使用することで、日付を指定の形式で表示し、グループ解除を行うことができます。

Sub FormatDateField()
    Dim pivotTable As PivotTable
    Set pivotTable = ActiveSheet.PivotTables(1)
    pivotTable.PivotFields("日付").NumberFormat = "yyyy/m/d"
    pivotTable.PivotFields("日付").ShowDetail = False
End Sub

このコードで、日付が「yyyy/m/d」形式で表示され、グループ解除されます。

「表形式で表示」を選択し、小計を非表示にする方法

最後に、ピボットテーブルを「表形式で表示」にし、小計を非表示にする方法を説明します。これを行うことで、より見やすくシンプルなレポートを作成することができます。

Sub SetTableFormat()
    Dim pivotTable As PivotTable
    Set pivotTable = ActiveSheet.PivotTables(1)
    pivotTable.TableStyle2 = "PivotStyleLight16"
    pivotTable.ShowSubtotals = False
End Sub

このコードを実行することで、ピボットテーブルが表形式で表示され、小計が非表示になります。

まとめ

Excelマクロを使用してピボットテーブルの処理を自動化する方法について説明しました。マクロを活用することで、手動での操作を減らし、データ分析を効率化できます。ピボットテーブルを新規シートに作成し、フィールド順序や値の反映、日付の表示形式の変更、小計の非表示など、さまざまなカスタマイズが可能です。これらの手順を試して、ピボットテーブルをより効果的に活用しましょう。

コメント

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