ExcelVBA ピボットテーブルのフィルターを設定することにより、データの分析や特定の条件に基づいた集計を自動化することができます。これにより、手動でフィルターをかける手間が省け、効率的なデータ処理が可能です。
使い方や注意点など、サンプルコードをもとに具体的に解説します。
以下のようなシーンで利用されます。
1.月次レポート作成で特定の月や期間にフィルターを設定する
2.商品カテゴリ別や地域別など、特定の条件でデータを絞り込みたい
3.特定の担当者のデータだけを表示して分析する必要がある
1. ピボットテーブルに対してフィルターを設定します。
2. フィルターをかけるフィールドと、絞り込みたい値を指定します。
1.フィルター対象のフィールド名は、データの更新や変更により一致しなくなる場合があるので、最新の情報を確認する必要があります。
2.指定するフィルターの値が存在しない場合、エラーが発生することがあるため、エラーハンドリングを考慮します。
3.ピボットテーブルの更新を忘れると、フィルター結果が正しく反映されない場合があります。
Option Explicit
Sub FilterPivotTable()
Dim ws As Worksheet
Dim pivotTable As pivotTable
Dim pivotField As pivotField
' ピボットテーブルが存在するシートを指定
Set ws = ThisWorkbook.Sheets("ピボットシート")
' ピボットテーブルを指定
Set pivotTable = ws.PivotTables("SamplePivotTable")
' フィルターをかけるフィールドを指定
Set pivotField = pivotTable.PivotFields("商品")
' すべてのアイテムを一度非表示にする
pivotField.ClearAllFilters
' 特定のアイテムを表示(例: "a" という商品)
pivotField.CurrentPage = "a"
' 更新を行う
pivotTable.RefreshTable
End Sub
1.ピボットテーブルの指定
Set pivotTable = ws.PivotTables("SamplePivotTable") で操作するピボットテーブルを指定します。
2.フィルターを設定
pivotField.CurrentPage = "a" で、「商品」フィールドに「a」をフィルターとして設定します。
3.フィルターのクリア
pivotField.ClearAllFilters で、以前のフィルターをすべてクリアします。
4.ピボットテーブルの更新
pivotTable.RefreshTable で最新の情報に更新します。
※シート名(ピボットシート)、テーブル名(SamplePivotTable)、フィルター項目は環境に合わせて修正してご利用ください。
このコードは、ピボットテーブルの「商品」フィールドに「a」という条件を設定するシンプルな例です。他のフィールドに対してフィルターを設定したい場合は、 pivotField の指定を変更してください。 フィルター条件を柔軟に変更できるように、変数を使って操作すると便利です。
操作方法:1.●●●をクリック(スマホはタップ)で答え表示。2.答えをクリック(スマホはタップ)で●●●表示。1⇔2を繰り返すことで、記憶を定着できます。
1.ピボットテーブルの指定
Set pivotTable = ws.●●●("SamplePivotTable") で操作するピボットテーブルを指定します。
2.フィルターを設定
pivotField.●●● = "a" で、「商品」フィールドに「a」をフィルターとして設定します。
3.フィルターのクリア
pivotField.●●● で、以前のフィルターをすべてクリアします。
4.ピボットテーブルの更新
pivotTable.●●● で最新の情報に更新します。
Excel VBAで自動化するコードのベースを習得したい方におすすめ!
VBAエキスパート資格は、日常業務でExcelを多用し、手動作業を減らしたいと考えている方には価値あるものです。
ExcelVBAエキスパートベーシック
仕事の効率をあげるためにExcelVBAを利用する人が対象の問題集です。
ExcelVBAエキスパートスタンダード
ExcelVBAの開発を仕事にする人が対象の問題集です。
Excel VBA エキスパート資格について知りたい方は、下記「Excel VBAスキルアップを目指すなら知っておきたいVBAエキスパート」をご確認ください。