- 「はぁ……また今日もこの作業か……」
- 「どこに何をいれればいいんだっけ?」
こんなふうに思ったことはありませんか?
でも、VBA(マクロ)を使えば、その作業は「1秒」で終わらせることができます。
毎日10分以上かけていた作業が、ボタンひとつで完了。年間で考えれば、なんと約40時間(5営業日分相当)もの貴重な時間を節約できる計算になります。
今回は、プログラミング初心者の方でも「コピペ」で今すぐ使える、ピボットテーブルの作成・更新コードを解説します。
ピボットテーブルをVBAで操る「2つのステップ」
難しい用語は抜きにして、ピボットテーブルをVBAで作る仕組みを「お料理」に例えて説明します。
- 材料の準備(ピボットキャッシュ): 冷蔵庫から食材(データ)を出して、まな板の上に並べる作業です。
- 調理(ピボットテーブル): まな板の上の食材を、お皿(シート)に盛り付ける作業です。
VBAでは、この「データの塊(キャッシュ)」をまず作ってから、それを「表(テーブル)」として表示させるという2段階で命令を出します。
【コピペOK】自動作成・更新のVBAコード
以下のコードは、データが増えても自動で範囲を調整してくれる「魔法のコード」です。
Sub AutoPivotTable()
' --- 変数の定義(使う道具の名前を決める) ---
Dim wsData As Worksheet ' 元データが入っているシート
Dim wsPivot As Worksheet ' ピボットを作る先のシート
Dim pc As PivotCache ' データの記憶場所
Dim pt As PivotTable ' ピボットテーブル本体
Dim lastRow As Long ' データの最終行
' 1. シートの設定(ご自身のシート名に変えてください)
Set wsData = ThisWorkbook.Worksheets("データ")
' もし「集計」シートがすでにある場合は、一旦消して新しく作ります
On Error Resume Next
Application.DisplayAlerts = False
Worksheets("集計").Delete
Application.DisplayAlerts = True
On Error GoTo 0
Set wsPivot = Worksheets.Add
wsPivot.Name = "集計"
' 2. データの最終行を自動で見つける
lastRow = wsData.Cells(wsData.Rows.Count, "A").End(xlUp).Row
' 3. ピボットキャッシュの作成
' SourceDataには「データ」シートのA1から右下の端っこまでを指定
Set pc = ThisWorkbook.PivotCaches.Create( _
SourceType:=xlDatabase, _
SourceData:=wsData.Name & "!R1C1:R" & lastRow & "C5") ' C5はE列という意味
' 4. ピボットテーブルの作成
Set pt = pc.CreatePivotTable( _
TableDestination:=wsPivot.Name & "!R3C1", _
TableName:="売上集計表")
' 5. フィールドの設定(どの項目を縦・横・値にするか決める)
With pt
' 行(縦軸)に「担当者」を入れる
.PivotFields("担当者").Orientation = xlRowField
' 値に「売上金額」を入れて、合計を計算する
With .PivotFields("売上金額")
.Orientation = xlDataField
.Function = xlSum
.NumberFormat = "#,##0" ' カンマ区切りで見やすくする
End With
End With
MsgBox "ピボットテーブルの作成が完了しました!"
End Sub
このコードのポイント
- 「最終行」を自動で判別: Cells(Rows.Count, “A”).End(xlUp) という命令を使うことで、データが100行であっても1万行であっても、VBAが自動的に末尾を検索してくれます。そのため、データが増えたからといって毎回手動で範囲を修正する手間がなくなります。
- 「上書き」によるミスの防止:マクロを実行するたびに、一度古い集計シートを削除して新規に作り直す設定にしています。これにより、「過去の古いデータが一部残ってしまい、計算が合わなくなる」といったトラブルを未然に防ぎ、正確な結果を得ることができます。
VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。
リンク
リンク

コメント