「まだ手動で変えてるの?」VBAでピボットテーブルのフィルタ・レイアウトを一括操作する方法

【業務効率化】VBA
スポンサーリンク

「はぁ……また今日も、この10個のピボットテーブルのフィルターを『先月分』に切り替える作業から始まるのか……。クリック、カチカチ。選択、カチカチ。本当に面倒くさいな…。」

そんなふうに感じたことはありませんか?

私も急いで操作するあまり、フィルターを一つ掛け忘れていたことがあります。そんな時に大活躍するのが、「VBAによるピボットテーブルの自動操作」になります。

【業務効率化】VBAの記事を見る 

VBAで実現できる2つの操作

私たちが自動化したい作業は、大きく分けて以下の2つだけになります。

  • フィルターの変更: 特定のデータだけを抽出して表示させます。
  • レイアウトの変更: 表の形式を整えて、見やすく配置します。

【コピペOK】フィルターとレイアウトを一括変更するコード

さっそく、実務でそのまま使えるコードをご紹介します。
このコードは、「売上データ」という名前のピボットテーブルのフィルターを「東京支店」に変更し、さらに見やすい「表形式」へと一瞬で整えるものになります。

Sub UpdatePivotTable()
    ' --- 変数の準備 ---
    Dim pt As PivotTable
   
    ' シート名を「売上報告」に、ピボットテーブル名を「売上データ」に指定
    ' ※自分のシート名やテーブル名に合わせて書き換えてください
    On Error Resume Next ' エラーが起きても止まらないようにする
    Set pt = ThisWorkbook.Worksheets("売上報告").PivotTables("売上データ")
    On Error GoTo 0
   
    If pt Is Nothing Then
        MsgBox "ピボットテーブルが見つかりません!名前を確認してください。"
        Exit Sub
    End If

    ' --- 1. フィルター(ページフィールド)の変更 ---
    ' 「支店名」という項目のフィルターを「東京支店」に固定します
    With pt.PivotFields("支店名")
        .ClearAllFilters ' まずはフィルターを全部リセット
        .CurrentPage = "東京支店" ' 特定の項目を選択
    End With

    ' --- 2. レイアウトの変更 ---
    ' 表の見た目を「表形式」に変更
    pt.RowAxisLayout xlTabular
   
    ' 行の総計を表示しない
    pt.ColumnGrand = False
   
    ' 最後にデータを最新の状態に更新
    pt.RefreshTable

    MsgBox "ピボットテーブルの更新が完了しました!"
End Sub

押さえておきたいコードのポイント

  • .CurrentPageこれがフィルターの選択肢を決める重要なプロパティです。ここに「2026年3月」などと指定するだけで、一瞬で表示が切り替わります。
  • xlTabular: ピボットテーブル特有の「あの、ちょっと見づらい階段状の表示」を、一般的なスッキリとした表形式に変更してくれる便利な設定になります。

【失敗談】動かない原因は「名前」にある?

実は私、初めてこのコードを書いた時、全く動きませんでした。
コードは正しいはずなのに、なぜ??」と半日悩んだ結果……原因は、ピボットテーブルの「名前」が「ピボットテーブル1」ではなく、半角英字で「PivotTable1」になっていたという非常に単純なミスでした。

VBAはオブジェクトの名前(表記ミス)に対してとても厳格です。皆さんが実行される際は、Excelの「ピボットテーブル分析」タブの左端にある「ピボットテーブル名」を事前にご確認いただくのが確実です。

【業務効率化】VBAの記事を見る 


VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

この記事を書いた人
ぐー

手取り15万円の会社員でしたが、年間100万円以上節約していました。
株式投資で年間360万円以上投資し、iDeCoも併用しています。
総資産はアッパーマス層に到達しました。
資格は日商簿記3級を持っています。

このブログでは、私が実践してきた節約術やリアルな資産運用、生産性を高めるITスキルについて発信しています。

生活を豊かにするため、高配当株投資で年間配当金60万円をめざしています。
現在の年間配当金は30万円ほどです。

ゲーム・漫画・アニメなどが好きです。
一緒に資産形成をがんばりましょう!
よろしくお願いします!

ぐーをフォローする
【業務効率化】VBAITスキル
スポンサーリンク
ぐーをフォローする

コメント

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