KutoolsforOffice— 1 つのソリューション、5 つの強力なツール。少ない労力で大きな成果。

Excel で特定のセルの値に基づいてピボットテーブルをフィルターするには、どうすればよいですか?

著者Siluvia変更日

Excel では、PivotTable がデータの集計・分析・探索を効率的に行うために広く活用されています。通常、PivotTable 内のフィルタリングは、フィルターのドロップダウンメニューから目的の項目を選択することで行います。この方法は柔軟性に優れていますが、特定のワークシートセルに入力された値に基づいて PivotTable の結果が自動的に変化する、より動的なフィルタリングが求められる場面もあります。このような動的フィルタリングは、特にダッシュボードの作成時やワークフローの自動化時、あるいは手動でのフィルタリング操作に不慣れなエンドユーザー向けのインタラクティブなレポートを構築する際に非常に役立ちます。

Excel には、セルの値をピボットテーブルのフィルターに直接リンクする標準機能(コードを使わない方法)は用意されていません。しかし、この要件を満たすための実用的な手法がいくつかあり、それぞれにメリットと検討すべきポイントがあります。本チュートリアルではまず、セルの値が変更されると即座にピボットテーブルが更新されるよう、セルとピボットテーブルのフィルターを直接接続するシンプルな VBA 手法を紹介します。さらに、GETPIVOTDATA や FILTER といった Excel 関数を使ってフィルター結果を表示する方法や、グラフィカルなフィルターコントロールとしてスライサーを利用する代替手法についても解説します。これらの選択肢を理解することで、ご自身の Excel ワークフローやユーザーエクスペリエンスに最適な方法を選びやすくなります。

Excel のピボットテーブルにドロップダウンフィルターが表示されているスクリーンショット


VBA コードを使用して特定のセルの値に基づいて PivotTable をフィルターする

セルに値を入力するだけで PivotTable のフィルターが自動で反応する、本格的な動的インタラクティビティを実現したいなら、VBA が最も直接的で効果的な解決策です。この手法は、ダッシュボードや同僚向けテンプレート、あるいは単一セルの変更で素早くフィルターを調整したい場面で特に役立ちます。ただし、この方法には VBA エディターの基本的な操作知識が必要です。また、他のすべてのマクロと同様に、ワークブックはマクロ対応形式().xlsm)で保存する必要があります。

次の VBA コードを使えば、ワークシートのセルをピボットテーブルのフィルターに動的にリンクできます。手順に従って慎重に操作し、必要に応じてワークシート名、ピボットテーブル名、およびフィールド参照をあなたのワークブックに合わせて修正してください。

手順1:ワークシートのセル(例:セル)H6)に、PivotTable をフィルターする値を入力または選択します。

手順2: 対象のピボットテーブルを含むワークシートを開きます。Excel 下部のシートタブを右クリックし、コンテキストメニューからコードの表示を選択すると、そのワークシートの VBA エディター画面が開きます。

Excel のワークシートで「コードの表示」オプションが表示されているスクリーンショット

手順3: 開いたMicrosoft Visual Basic for Applications(VBA)ウィンドウに、次のコードをワークシートのコードモジュール(標準モジュールではなく)に貼り付けます:

VBA コード:セルの値に基づいて PivotTable をフィルターする

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 数式 – セルの値に基づいてフィルターされた PivotTable の結果を表示する

マクロを有効にしたくないユーザーにもおすすめ!Excel では、数式ベースの手法で表示中の PivotTable の結果を、特定のセルの値に基づいて動的に取得できます。GETPIVOTDATAFILTERといった関数は PivotTable のフィルター設定を実際に変更するわけではありませんが、ユーザー入力に応じてサマリー結果を動的に参照・表示することが可能です。

この解決策は、元のピボットテーブルビューを一切変更することなく、ユーザーが入力する条件の変化をリアルタイムに反映したカスタム集計表やダッシュボード、レポートを作成する際に特に効果的です。

GETPIVOTDATA の使用:

たとえば、PivotTable(名前:「PivotTable2」)がカテゴリごとの売上を集計しており、フィルター値がセルH6に入力されている場合、GETPIVOTDATAを使用して H6 で指定されたカテゴリの売上合計を表示できます:

1。サマリー結果を表示したいセル(例:I6)を選択してください:

=GETPIVOTDATA("Sum of Sales", $A$4, "Category", $H$6)

2。Enterを押します。H6の値を変更すると、I6の結果が PivotTable からの該当サマリーに応じて自動的に更新されます。

PivotTable で異なる条件名やレイアウトを使用している場合は、それに応じて数式を調整してください。GETPIVOTDATA 数式を自動生成するには、セルに=と入力した後、PivotTable 内の値セルをクリックします。Excel が適切な数式を自動挿入してくれるので、必要に応じて編集してください。

ヘルパー表を用いた FILTER の使用:

元のデータセットから詳細なレコードを抽出したい場合(単なる PivotTable のサマリーではなく)、かつExcel 365 またはExcel 2019 を使用している場合は、FILTER 関数でセルの値に基づく動的フィルタリングが可能です:

元のソースデータが範囲 A1:C100にあり、列 A にCategoryがあると仮定します。

1。フィルター結果を表示する先頭セルを選択します(例:J6):

=FILTER(A2:C100, A2:A100 = H6, "No data")

2。Enter キーを押します。一致する行が隣接セルにスピルされ、H6 セルの値とカテゴリが一致するすべてのレコードが一覧表示されます。H6 セルの値を変更すると、結果が即座に更新されます。

PivotTable のグループ分けに合わせてデータを取得したり、複数の条件でフィルターをかけたりする場合は、GETPIVOTDATA 関数とFILTER 関数を組み合わせるか、追加の論理条件で数式を拡張することをご検討ください。

📝 ヒントと注意点:

  • これらの数式は実際のピボットテーブルフィルターを変更するものではなく、セルの値に基づいた別の動的ビューを提供するだけです。
  • ピボットテーブルのフィルターを直接変更するには、VBA が必要です。
  • 条件名は、GETPIVOTDATAで使用されるものと、ピボットテーブル内のもの(大文字・小文字およびスペースを含む)が完全に一致している必要があります。
  • #REF!エラーが表示された場合は、参照先が有効で、ピボットテーブルの構造が変更されていないことをご確認ください。

その他のExcel 標準機能 – スライサーをインタラクティブな PivotTable フィルターとして使用する

VBA や数式ベースのソリューションがあなたのワークフローに完全には合わない場合、Excel のスライサーが、PivotTable をフィルターするもう一つのインタラクティブな方法を提供します。スライサーは視覚的なフィルターコントロールで、ユーザーが簡単なクリック操作だけでデータを絞り込める直感的なインターフェースを実現します。ただし、セルの値に直接リンクすることはできません(つまり、セルを変更してスライサーを制御することはできません)。それでも、非技術的なユーザー向けのダッシュボードやレポートでは、その直感性が非常に効果を発揮します。

スライサーの追加と使用方法:

  1. PivotTable 内の任意のセルを選択してください。
  2. ピボットテーブル分析タブ(旧バージョンでは)分析タブ)に移動し、スライサーの挿入をクリックしてください。
  3. スライサーの挿入ダイアログボックスで、フィルターに使用するフィールド(例:Category)をチェックして、OKをクリックします。
  4. スライサーがワークシート上に表示されます。ボタンをクリックすると、その値で PivotTable がフィルターされます。複数の項目を選択するには、Ctrlキーを押しながらクリックしてください。

スライサーは書式設定やサイズ変更が可能で、複数の PivotTable にリンクして異なるレポート間で同期フィルターを実現できます。特に、ドロップダウンフィルターの使用に慣れていないユーザーが簡単にデータをフィルターする必要があるダッシュボードや共有ブックにおいて非常に役立ちます。VBA や数式の編集を必要としないためです。

制限事項:スライサーはセルの値にネイティブにリンクできません。ワークフローでセル入力による動的フィルターが必要な場合は、スライサーを VBA や数式ベースの方法の代替ではなく、補完的なツールとしてご活用ください。

また、データがExcel テーブル(PivotTable ではない)に格納されている場合も、テーブルを選択してテーブルデザインタブ > スライサーの挿入からスライサーを利用できます。

トラブルシューティング:スライサーが PivotTable を正しくフィルターしていないように見える場合は、レポート接続スライサータブまたは分析タブ内)を確認し、目的の PivotTable(複数可)に正しく接続されていることをご確認ください。

上記の各手法は異なる目的に適しています。VBA はセルにリンクした直接的なフィルターを可能にし、数式は結果を動的に表示し、スライサーはユーザーフレンドリーなグラフィカルフィルターを提供します。自動化、柔軟性、使いやすさのバランスに最も適したアプローチを選択してください。従来の PivotTable ドロップダウンフィルターは、基本的な代替手段として引き続き利用可能です。

関連記事:

最高の Office 業務効率化ツール

🤖KUTOOLS AI アシスタント:次に基づいてデータ分析を革新します:インテリジェント実行     コード生成  カスタム数式作成    データ分析とチャート生成  拡張機能呼び出し
人気の機能検索・ハイライト、または重複をマーキング     空白行を削除する     データを失うことなく列の結合またはセルを     数式を使用しない四捨五入...
スーパー LOOKUP複数条件 VLookup    複数値 VLookup     複数シート間 VLookup      ファジーマッチ....
高度なドロップダウンリストドロップダウンリストをすばやく作成     連動型ドロップダウンリスト     複数選択可能なドロップダウンリスト....
列マネージャー指定した数の列を追加列の移動非表示列の表示状態を切り替え範囲および列の比較...
注目の機能グリッドフォーカス     デザインビュー   強化された数式バー    ワークブックとシートマネージャー     リソースライブラリ(オートテキスト)  日付ピッカー     ワークシートの統合    暗号化/セルの復号化    リストからメール送信     スーパーフィルター      特殊フィルタ(太字のフォントを持つセルをフィルタリング/斜体/取り消し線。。。) 。。。
トップ15 ツールセット12 テキストツールテキストの追加特定の文字を削除、...)   50+チャートタイプガントチャート、...)   40+実用的関数誕生日に基づいて年齢を計算します、...)   19 挿入ツールQR コードを挿入パスから画像を挿入、...)   12 変換ツール単語に変換する為替レートの変換、...)   7 結合と分割ツール高度な行のマージセルの分割、...)さらに多数
Kutools はお好みの言語でご利用いただけます。英語、スペイン語、ドイツ語、フランス語、中国語、および40+の他の言語をサポートしています!

Kutools for Excel でExcel スキルを強化し、これまでにない効率を体験しましょう。Kutools for Excel は、生産性を高め、時間を大幅に節約できる高度な機能を300 以上提供します。最も必要な機能を今すぐ入手するにはこちらをクリック。。。


Office Tab は Office にタブインターフェースをもたらし、作業を大幅に簡単にします

  • Word、Excel、PowerPoint でタブを使った編集と閲覧を有効にします。Publisher、Access、Visio、Project でもご利用いただけます。
  • 複数のドキュメントを、新しいウィンドウではなく、同じウィンドウ内の新しいタブで開いたり作成したりできます。
  • 日々の生産性を50%も向上させ、毎日数百回ものマウスクリックを削減します!

すべてのKutools アドインが、たった1 つのインストーラーで完結。

Kutools for Officeスイートには、Excel ・Word ・Outlook ・PowerPoint 用のアドインと Office Tab Pro が含まれており、複数の Office アプリを横断して作業するチームに最適です。

ExcelWordOutlookTabsPowerPoint
  • オールインワンスイート— Excel、Word、Outlook、PowerPoint 用アドイン+Office Tab Pro
  • インストーラー1 つ、ライセンス1 つ— 数分でセットアップ可能(MSI 対応)
  • 連携してさらにパワーアップ— Office アプリ全体で生産性が向上
  • 30 日間のフル機能トライアル— 登録不要、クレジットカード不要
  • 最高のお得感— 個別アドイン購入よりお得