Excelで特定のセルの値に基づいてピボットテーブルをフィルタリングするにはどうすればよいですか?
Excelでは、ピボットテーブルはデータの集計、分析、および効率的な探索に広く使用されています。デフォルトでは、ピボットテーブル内のフィルタリングは通常、フィルタードロップダウンメニューから目的の項目を選択することで行われます。この方法は柔軟性がありますが、より動的なフィルタリング方式が必要な場合もあります。たとえば、ピボットテーブルの結果を特定のワークシートセルに入力された値に基づいて自動的に変更したい場合です。これは特に、ダッシュボードの準備やワークフローの自動化、または手動でのフィルタリングに慣れていないエンドユーザー向けのインタラクティブレポートを作成する際に役立ちます。
Excelには、ピボットテーブルフィルタを直接的にセルの値にリンクする標準機能はありません(コードを使用しない場合)。しかし、この要件に対応するためのいくつかの実用的な手法があり、それぞれ独自の利点と考慮すべきポイントを持っています。このチュートリアルでは、まず、セルをピボットテーブルフィルタに直接接続でき、セルの値が変わると即座にピボットテーブルが更新されるシンプルなVBA手法を紹介します。さらに、Excelの数式(例:GETPIVOTDATA、FILTER)を使ってフィルタリング結果を表示したり、スライサーを使ったグラフィカルなフィルターコントロールについても説明します。これらの選択肢を理解することで、Excelのワークフローとユーザーエクスペリエンスに最適な方法を選ぶことができます。
➤ 特定のセル値に基づいてピボットテーブルをフィルタリングする(VBAコード使用)
➤ Excelの数式 - セル値に基づいたピボットテーブルのフィルタリング結果を表示する
➤ その他の組み込みExcelメソッド - スライサーをインタラクティブなピボットテーブルフィルターとして使用する
VBAコードを使用して特定のセル値に基づいてピボットテーブルをフィルタリングする
真のダイナミックなインタラクティビティが必要な場合(つまり、セルに値を入力するとピボットテーブルフィルタが自動的に反応する仕組み)、VBAは直接的な解決策を提供します。これは特に、ダッシュボードや同僚向けのテンプレート、または単一のセルの変更による迅速なフィルタ調整が必要な状況で役立ちます。ただし、この方法にはVBAエディタの基本的な知識が必要であり、すべてのマクロと同様に、ワークブックはマクロ有効形式(.xlsm)で保存する必要があります。
次のVBAコードにより、ワークシートのセルをピボットテーブルフィルタに動的にリンクできます。以下の手順を慎重に実行し、必要に応じてワークシート名、ピボットテーブル名、フィールド参照を自分のワークブックに合わせて修正してください。
ステップ 1: ピボットテーブルをフィルタリングしたい値をワークシートのセルに入力します(例:H6セルにフィルタリング値を入力または選択します)
ステップ 2: 対象のピボットテーブルが含まれているワークシートを開きます。Excelウィンドウ下部のシートタブを右クリックし、コンテキストメニューから「コードの表示」を選択します。これにより、ワークシート用のVBAエディタウィンドウが開きます。
ステップ 3: 開かれたMicrosoft Visual Basic for Applications (VBA) ウィンドウで、以下のコードをワークシートのコードモジュール(標準モジュールではありません)に貼り付けます。
VBAコード: セル値に基づいてピボットテーブルをフィルタリングする
Private Sub Worksheet_Change(ByVal Target As Range)
'Update by Extendoffice 20180702
Dim xPTable As PivotTable
Dim xPFile As PivotField
Dim xStr As String
On Error Resume Next
If Intersect(Target, Range("H6:H7")) Is Nothing Then Exit Sub
Application.ScreenUpdating = False
Set xPTable = Worksheets("Sheet1").PivotTables("PivotTable2")
Set xPFile = xPTable.PivotFields("Category")
xStr = Target.Text
xPFile.ClearAllFilters
xPFile.CurrentPage = xStr
Application.ScreenUpdating = True
End Sub
📝 注意:
- "Sheet1"はピボットテーブルが含まれるワークシートです。必要に応じて調整してください。
- "PivotTable2"はピボットテーブルの名前です。これはピボットテーブル分析タブで確認できます。
- "Category"はフィルタリングしたいフィールドです。正確にフィールド名と一致している必要があります。
- H6はフィルタリング用のセルです。フィルタリスト内の項目と一致するように値を指定してください。
- フィルタ値は文字ごとに完全に一致させる必要があります。余分なスペースやタイプミスがあるとエラーが発生したり、結果が空白になることがあります。
ステップ 4: Alt + Qキーを押してVBAエディタを閉じ、Excelに戻ります。
これで、ピボットテーブルはH6に入力された値と一致するデータのみを自動的にフィルタリングして表示します。このマクロはH6の値が変わるたびに実行され、データのサマリーを簡単に動的に調整できます。
フィルタリング用のセルの値はいつでも変更できます。セル内容が変更または置き換えられた場合、ピボットテーブルは即座に更新されます。
トラブルシューティング:
- ワークブックでマクロが有効になっていることを確認してください。
- ワークシート、ピボットテーブル、およびフィールド名が実際の設定と一致していることを再確認してください。
- H6のフィルタ値がピボットテーブルの値と正確に一致していることを確認してください。
- このVBAアプローチは単一フィールドのフィルタリングに適用可能です。複数のフィールドの場合、追加のスクリプトが必要です。
Excelの数式 – セル値に基づいてフィルタリングされたピボットテーブル結果を表示する
マクロを有効にしたくないユーザーにとって、Excelでは特定のセル値に基づいてピボットテーブルの結果を表示するための数式ベースのアプローチを提供しています。GETPIVOTDATA
やFILTER
のような関数はピボットテーブルのフィルタ設定自体を変更しませんが、ユーザー入力に応じて動的に参照し、サマリー結果を提示することができます。
この解決策は、カスタムサマリーテーブルやダッシュボード、レポートを作成する際に特に有用です。ユーザーが入力した基準が変更されても元のピボットテーブルビューは変更されません。
GETPIVOTDATAを使う場合:
あなたのピボットテーブル("PivotTable2"という名前)がカテゴリ別に売上を集計していると仮定し、フィルタ値をH6セルに入力します。GETPIVOTDATA
を使用して、H6で指定されたカテゴリの総売上を表示できます。
1. サマリーリザルトを表示したいセルを選択します(例:I6):
=GETPIVOTDATA("Sum of Sales", $A$4, "Category", $H$6)
2. Enterキーを押します。H6の値を変更すると、I6の結果が自動的に更新され、ピボットテーブルからの対応するサマリーが反映されます。
ピボットテーブルが異なるフィールド名やレイアウトを使用している場合は、それに応じて数式を調整してください。GETPIVOTDATA
数式を自動生成するには、セルに =
を入力し、ピボットテーブル内の値セルをクリックします。Excelが適切な数式を挿入し、それを必要に応じて編集できます。
ヘルパーテーブルを使用してFILTERを使う場合:
(ピボットテーブルのサマリーではなく)元のデータセットから詳細なレコードを抽出したい場合、そしてExcel 365またはExcel 2019を使用している場合、FILTER
関数を使用してセル値に基づいて動的にフィルタリングできます。
元のデータ範囲がA1:C100
で、カテゴリがA列にあると仮定します。
1. フィルタリングされたレコードを表示したい開始セルを選択します(例:J6):
=FILTER(A2:C100, A2:A100 = H6, "No data")
2. Enterキーを押します。一致する行が隣接するセルに展開され、カテゴリーがH6の値と一致するすべてのレコードがリストされます。H6を更新すると、結果は即座に更新されます。
ピボットテーブルのグループ分けに一致させたり、複数の条件でフィルタリングするには、GETPIVOTDATA
とFILTER
を組み合わせるか、追加の論理条件で数式を拡張することを検討してください。
📝 ヒント&警告:
- これらの数式は実際のピボットテーブルフィルタを変更しません。これらはセル値に基づいた別々の動的なビューを提供するだけです。
- ピボットテーブルフィルタを直接変更するには、VBAが必要です。
GETPIVOTDATA
で使用するフィールド名がピボットテーブルのものと正確に一致していることを確認してください(大文字小文字やスペースを含む)。#REF!
エラーが表示される場合、参照が有効で、ピボットテーブルの構造が変更されていないか確認してください。
その他の組み込みExcelメソッド – スライサーをインタラクティブなピボットテーブルフィルターとして使用する
VBAや数式ベースのソリューションがあなたのワークフローに完全には適合しない場合、Excelのスライサーはピボットテーブルをフィルタリングするための別のインタラクティブな方法を提供します。スライサーは視覚的なフィルターコントロールで、ユーザーは簡単なクリック操作でデータをフィルタリングできます。スライサーはセル値に直接リンクすることはできないため(つまり、セルを変更してスライサーを制御することはできません)、非技術的なユーザー向けのダッシュボードやレポートにおいて直感的で非常に効果的です。
スライサーを追加して使用する方法:
- ピボットテーブル内の任意のセルを選択します。
- ピボットテーブル分析タブ(または古いバージョンの場合は分析タブ)に行き、「スライサーの挿入」をクリックします。
- 「スライサーの挿入」ダイアログボックスで、フィルタリングしたいフィールド(例:カテゴリ)にチェックを入れ、OKをクリックします。
- スライサーがワークシートに表示されます。ボタンをクリックして、その値でピボットテーブルをフィルタリングします。Ctrlキーを押しながら複数の項目を選択できます。
スライサーはフォーマットやサイズ変更ができ、複数のピボットテーブルにリンクして異なるレポート間で同期フィルタリングを行うことができます。スライサーは、特にドロップダウンフィルターに慣れていないユーザー向けのダッシュボードや共有ワークブックにおいて、VBAや数式を編集せずにデータを簡単にフィルタリングできるツールとして非常に便利です。
制限事項: スライサーはセル値へのネイティブリンクをサポートしていません。ワークフローでセル入力によって動的なフィルタリングが必要な場合、スライサーはVBAや数式ベースの方法の代替手段というよりも補完的なツールと考えるべきです。
また、データがピボットテーブルではなくExcel表に格納されている場合でも、テーブルを選択して表デザインタブ>スライサーの挿入でスライサーを使用できます。
トラブルシューティング: スライサーがピボットテーブルをフィルタリングしていない場合、スライサータブまたは分析タブの「レポート接続」を確認し、正しいピボットテーブルに正しく接続されているか確認してください。
上記の各方法は異なる目的に役立ちます。VBAはセルリンクフィルタリングを直接可能にし、数式は結果を動的に表示し、スライサーはユーザーフレンドリーなグラフィカルフィルタリングを提供します。自動化、柔軟性、使いやすさの必要性に最も合致するアプローチを選んでください。従来のピボットテーブルドロップダウンフィルターは基本的なフォールバックオプションとして利用可能です。
関連記事:
- Excelで複数のシートを1つのピボットテーブルに結合する方法は?
- Excelでテキストファイルからピボットテーブルを作成する方法は?
- Excelでピボットテーブルフィルタを特定のセルにリンクする方法は?
最高のオフィス業務効率化ツール
🤖 | Kutools AI Aide:データ分析を革新します。主な機能:Intelligent Execution|コード生成|カスタム数式の作成|データの分析とグラフの生成|Kutools Functionsの呼び出し…… |
人気の機能:重複の検索・ハイライト・重複をマーキング|空白行を削除|データを失わずに列またはセルを統合|丸める…… | |
スーパーLOOKUP:複数条件でのVLookup|複数値でのVLookup|複数シートの検索|ファジーマッチ…… | |
高度なドロップダウンリスト:ドロップダウンリストを素早く作成|連動ドロップダウンリスト|複数選択ドロップダウンリスト…… | |
列マネージャー:指定した数の列を追加 |列の移動 |非表示列の表示/非表示の切替| 範囲&列の比較…… | |
注目の機能:グリッドフォーカス|デザインビュー|強化された数式バー|ワークブック&ワークシートの管理|オートテキスト ライブラリ|日付ピッカー|データの統合 |セルの暗号化/復号化|リストで電子メールを送信|スーパーフィルター|特殊フィルタ(太字/斜体/取り消し線などをフィルター)…… | |
トップ15ツールセット:12 種類のテキストツール(テキストの追加、特定の文字を削除など)|50種類以上のグラフ(ガントチャートなど)|40種類以上の便利な数式(誕生日に基づいて年齢を計算するなど)|19 種類の挿入ツール(QRコードの挿入、パスから画像の挿入など)|12 種類の変換ツール(単語に変換する、通貨変換など)|7種の統合&分割ツール(高度な行のマージ、セルの分割など)|… その他多数 |
Kutools for ExcelでExcelスキルを強化し、これまでにない効率を体感しましょう。 Kutools for Excelは300以上の高度な機能で生産性向上と保存時間を実現します。最も必要な機能はこちらをクリック...
Office TabでOfficeにタブインターフェースを追加し、作業をもっと簡単に
- Word、Excel、PowerPointでタブによる編集・閲覧を実現。
- 新しいウィンドウを開かず、同じウィンドウの新しいタブで複数のドキュメントを開いたり作成できます。
- 生産性が50%向上し、毎日のマウスクリック数を何百回も削減!
全てのKutoolsアドインを一つのインストーラーで
Kutools for Officeスイートは、Excel、Word、Outlook、PowerPoint用アドインとOffice Tab Proをまとめて提供。Officeアプリを横断して働くチームに最適です。





- オールインワンスイート — Excel、Word、Outlook、PowerPoint用アドインとOffice Tab Proが含まれます
- 1つのインストーラー・1つのライセンス —— 数分でセットアップ完了(MSI対応)
- 一括管理でより効率的 —— Officeアプリ間で快適な生産性を発揮
- 30日間フル機能お試し —— 登録やクレジットカード不要
- コストパフォーマンス最適 —— 個別購入よりお得