Excelで複数のシートに対して列幅調整やセル整列、ピボットテーブル作成を自動化するマクロは、業務効率化に非常に役立ちます。ここでは具体的な手順とVBAコードの例を解説します。
マクロの基本構成
マクロの流れは以下の通りです:
- 対象ファイルを選択
- 指定シートの列幅・セル整列・ウインドウ枠・フィルター設定
- ピボットテーブル作成と降順ソート
これを順番にVBAで処理することで、一連の作業を自動化できます。
シート「パターン1」「パターン2」の処理
対象シートで列幅変更やセル整列を行う例です。
Sub FormatPatternSheets()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Sheets(Array("パターン1", "パターン2"))
ws.Unprotect
ws.Columns("A:A,E:I,K:K").AutoFit
ws.Columns("B:D").ColumnWidth = 10
ws.Columns("M:N").ColumnWidth = 35
ws.Columns("AC:AC").ColumnWidth = 15
ws.Cells.HorizontalAlignment = xlCenter
ws.Cells.VerticalAlignment = xlCenter
ws.EnableOutlining = False
ws.Rows(2).AutoFilter
Next ws
End Sub
ピボットテーブル作成の自動化
シート「全体結果」のD列と「個別結果」のAD列にピボットテーブルを作成し、降順に並べる例です。
Sub CreatePivotTables()
Dim wsAll As Worksheet, wsInd As Worksheet
Dim pc As PivotCache, pt As PivotTable
Set wsAll = ThisWorkbook.Sheets("全体結果")
Set wsInd = ThisWorkbook.Sheets("個別結果")
' 全体結果シートのピボット
Set pc = ThisWorkbook.PivotCaches.Create(xlDatabase, wsAll.Range("D2:D" & wsAll.Cells(wsAll.Rows.Count, "D").End(xlUp).Row))
Set pt = pc.CreatePivotTable(wsAll.Cells(1, 10), "PivotAll")
pt.PivotFields(1).Orientation = xlRowField
pt.AddDataField pt.PivotFields(1), "件数", xlCount
pt.PivotFields(1).AutoSort xlDescending, pt.PivotFields(1).Name
' 個別結果シートのピボット
Set pc = ThisWorkbook.PivotCaches.Create(xlDatabase, wsInd.Range("AD2:AD" & wsInd.Cells(wsInd.Rows.Count, "AD").End(xlUp).Row))
Set pt = pc.CreatePivotTable(wsInd.Cells(1, 31), "PivotInd")
pt.PivotFields(1).Orientation = xlRowField
pt.AddDataField pt.PivotFields(1), "件数", xlCount
pt.PivotFields(1).AutoSort xlDescending, pt.PivotFields(1).Name
End Sub
マクロの活用ポイント
複数シートをまとめて処理することで、手作業の繰り返しを削減できます。列幅やセル整列を統一することで、見やすいシートに整えることができます。
ピボットテーブル作成も自動化することで、毎回のデータ更新時に手間を省けます。
まとめ
VBAマクロを活用することで、Excelでの列幅調整、セル整列、フィルター設定、ピボットテーブル作成を自動化できます。今回紹介したコード例を参考に、シートや列番号、ピボットテーブル範囲を実際のデータに合わせて調整することで、業務効率化を実現できます。


コメント