Excelでピボットテーブルを作成し、特定のフィールドを行に配置してその合計を計算する処理をマクロで自動化する方法を紹介します。この記事では、具体的な手順に沿って、アクティブシートから新規シートにピボットテーブルを作成し、「国」、「首都」、「エリア」、「可否」の順番でフィールドを設定し、「可否」の合計を表示する方法を解説します。
ピボットテーブルを作成するための準備
まず、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
を使用して新しいシートにピボットテーブルを作成し、指定されたフィールド(「国」、「首都」、「エリア」、「可否」)を行に配置し、「可否」を合計するように設定しています。
日付のグループ解除と表示形式の変更
ピボットテーブルには、日付フィールドをグループ化することができますが、質問の中で日付のグループ解除を行い、表示形式を「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
このコードは、ピボットテーブル内の日付フィールドのグループ解除と表示形式の変更を行っています。
表形式の表示と小計の非表示
ピボットテーブルの表示形式を「表形式」に変更し、小計を非表示にするための設定を行います。以下のコードを使うと、表形式に変更して、小計を表示しないように設定できます。
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
で表形式を適用し、RowGrand
とColumnGrand
をFalse
に設定することで、小計を非表示にしています。
まとめ
Excelのマクロを使用すると、ピボットテーブルを効率よく作成し、フィールドの配置や集計方法をカスタマイズすることができます。特に、複数のフィールドを指定してその合計を計算する場合、マクロを使えば手間なく自動化できます。
さらに、ピボットテーブルのフォーマットや表示形式を設定することで、データをより視覚的に理解しやすくすることができます。マクロを活用して作業を効率化し、データ分析をスムーズに行えるようにしましょう。
コメント