Excelマクロでピボットテーブルの日付グループ解除と表示形式の設定を自動化する方法

Visual Basic

Excelのピボットテーブルを使うとき、日付のグループ解除や表示形式の変更など、手動で設定を行うことが多いですが、マクロを使ってこれらの操作を自動化することができます。この記事では、ピボットテーブルの「開始日」「終了日」「送付日」の列の日付グループ解除を行い、日付を「yyyy/m/d」の形式で表示する方法、さらに「表形式で表示」の設定や小計を非表示にする方法について解説します。

1. ピボットテーブルの日付グループ解除

ピボットテーブルの「開始日」「終了日」「送付日」などの日付列で日付がグループ化されている場合、まずはそのグループ化を解除して個別の日付を表示できるようにします。これをマクロで行うためには、VBAコードを使ってグループ解除を自動化します。

以下のコードを使って、指定した日付列のグループ解除を行うことができます。

“`vba
Sub UnGroupDates()
Dim pt As PivotTable
Dim pf As PivotField
Set pt = ActiveSheet.PivotTables(1) ‘ ピボットテーブルの設定
Set pf = pt.PivotFields(“開始日”) ‘ 開始日フィールドの設定
pf.Group.ClearAll ‘ グループ解除

Set pf = pt.PivotFields(“終了日”) ‘ 終了日フィールドの設定
pf.Group.ClearAll ‘ グループ解除

Set pf = pt.PivotFields(“送付日”) ‘ 送付日フィールドの設定
pf.Group.ClearAll ‘ グループ解除
End Sub
“`

このコードでは、ピボットテーブル内の「開始日」「終了日」「送付日」をグループ解除する処理を自動化しています。

2. 日付表示形式を「yyyy/m/d」に設定

グループ解除後、日付の表示形式を「yyyy/m/d」に変更することで、より見やすい形式に整えます。これもVBAで簡単に変更できます。

次のコードを使って、日付の表示形式を変更します。

“`vba
Sub FormatDates()
Dim pt As PivotTable
Dim pf As PivotField
Set pt = ActiveSheet.PivotTables(1) ‘ ピボットテーブルの設定
Set pf = pt.PivotFields(“開始日”) ‘ 開始日フィールドの設定
pf.NumberFormat = “yyyy/m/d” ‘ 日付形式の変更

Set pf = pt.PivotFields(“終了日”) ‘ 終了日フィールドの設定
pf.NumberFormat = “yyyy/m/d” ‘ 日付形式の変更

Set pf = pt.PivotFields(“送付日”) ‘ 送付日フィールドの設定
pf.NumberFormat = “yyyy/m/d” ‘ 日付形式の変更
End Sub
“`

このコードにより、指定した日付フィールドの表示形式が「yyyy/m/d」に変更されます。

3. 小計を非表示にする方法

ピボットテーブルの小計を非表示にするためには、フィールドの「小計」の設定を変更します。これもVBAで簡単に自動化できます。

次のコードを使用することで、小計を非表示にすることができます。

“`vba
Sub HideSubtotals()
Dim pt As PivotTable
Dim pf As PivotField
Set pt = ActiveSheet.PivotTables(1) ‘ ピボットテーブルの設定

Set pf = pt.PivotFields(“開始日”) ‘ 開始日フィールドの設定
pf.Subtotals(1) = False ‘ 小計を非表示

Set pf = pt.PivotFields(“終了日”) ‘ 終了日フィールドの設定
pf.Subtotals(1) = False ‘ 小計を非表示

Set pf = pt.PivotFields(“送付日”) ‘ 送付日フィールドの設定
pf.Subtotals(1) = False ‘ 小計を非表示
End Sub
“`

このコードでは、指定したフィールドに対して小計を非表示にしています。これにより、見やすいピボットテーブルを作成できます。

4. ピボットテーブルの全体的な設定を一括で変更する方法

上記の操作をすべて1つのマクロで実行することもできます。次のように、日付のグループ解除、表示形式の変更、小計の非表示を一括で処理するマクロを作成できます。

“`vba
Sub ModifyPivotTable()
Dim pt As PivotTable
Dim pf As PivotField
Set pt = ActiveSheet.PivotTables(1) ‘ ピボットテーブルの設定

‘ グループ解除
Set pf = pt.PivotFields(“開始日”)
pf.Group.ClearAll
Set pf = pt.PivotFields(“終了日”)
pf.Group.ClearAll
Set pf = pt.PivotFields(“送付日”)
pf.Group.ClearAll

‘ 日付形式の変更
Set pf = pt.PivotFields(“開始日”)
pf.NumberFormat = “yyyy/m/d”
Set pf = pt.PivotFields(“終了日”)
pf.NumberFormat = “yyyy/m/d”
Set pf = pt.PivotFields(“送付日”)
pf.NumberFormat = “yyyy/m/d”

‘ 小計非表示
Set pf = pt.PivotFields(“開始日”)
pf.Subtotals(1) = False
Set pf = pt.PivotFields(“終了日”)
pf.Subtotals(1) = False
Set pf = pt.PivotFields(“送付日”)
pf.Subtotals(1) = False
End Sub
“`

このマクロを実行することで、ピボットテーブル内の「開始日」「終了日」「送付日」の処理を一度に行うことができます。

まとめ

Excelのピボットテーブルで日付の「グループ解除」や「表示形式の変更」、小計の非表示設定を行うためのマクロの作成方法について解説しました。これらの操作をマクロで自動化することで、作業効率を大幅に向上させることができます。日付形式の変更や小計非表示の設定をスムーズに行いたい場合、このようなマクロを活用しましょう。

コメント

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