メインコンテンツへスキップ

Kutools for Office — 1つのスイート、5つのツールで、もっと多くのことを成し遂げましょう。

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

Author Siluvia Last modified

Excelでは、ピボットテーブルはデータの集計、分析、および効率的な探索に広く使用されています。デフォルトでは、ピボットテーブル内のフィルタリングは通常、フィルタードロップダウンメニューから目的の項目を選択することで行われます。この方法は柔軟性がありますが、より動的なフィルタリング方式が必要な場合もあります。たとえば、ピボットテーブルの結果を特定のワークシートセルに入力された値に基づいて自動的に変更したい場合です。これは特に、ダッシュボードの準備やワークフローの自動化、または手動でのフィルタリングに慣れていないエンドユーザー向けのインタラクティブレポートを作成する際に役立ちます。

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

A screenshot showing a Pivot Table with a drop-down filter in Excel


VBAコードを使用して特定のセル値に基づいてピボットテーブルをフィルタリングする

真のダイナミックなインタラクティビティが必要な場合(つまり、セルに値を入力するとピボットテーブルフィルタが自動的に反応する仕組み)、VBAは直接的な解決策を提供します。これは特に、ダッシュボードや同僚向けのテンプレート、または単一のセルの変更による迅速なフィルタ調整が必要な状況で役立ちます。ただし、この方法にはVBAエディタの基本的な知識が必要であり、すべてのマクロと同様に、ワークブックはマクロ有効形式(.xlsm)で保存する必要があります。

次のVBAコードにより、ワークシートのセルをピボットテーブルフィルタに動的にリンクできます。以下の手順を慎重に実行し、必要に応じてワークシート名、ピボットテーブル名、フィールド参照を自分のワークブックに合わせて修正してください。

ステップ 1: ピボットテーブルをフィルタリングしたい値をワークシートのセルに入力します(例:H6セルにフィルタリング値を入力または選択します)

ステップ 2: 対象のピボットテーブルが含まれているワークシートを開きます。Excelウィンドウ下部のシートタブを右クリックし、コンテキストメニューから「コードの表示」を選択します。これにより、ワークシート用のVBAエディタウィンドウが開きます。

A screenshot showing the View Code option for a worksheet in Excel

ステップ 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の値が変わるたびに実行され、データのサマリーを簡単に動的に調整できます。

Pivot Table filtered based on a specific cell value

フィルタリング用のセルの値はいつでも変更できます。セル内容が変更または置き換えられた場合、ピボットテーブルは即座に更新されます。

Result of changing the filter cell value for the Pivot Table

トラブルシューティング:

  • ワークブックでマクロが有効になっていることを確認してください。
  • ワークシート、ピボットテーブル、およびフィールド名が実際の設定と一致していることを再確認してください。
  • H6のフィルタ値がピボットテーブルの値と正確に一致していることを確認してください。
  • このVBAアプローチは単一フィールドのフィルタリングに適用可能です。複数のフィールドの場合、追加のスクリプトが必要です。

Excelの数式 – セル値に基づいてフィルタリングされたピボットテーブル結果を表示する

マクロを有効にしたくないユーザーにとって、Excelでは特定のセル値に基づいてピボットテーブルの結果を表示するための数式ベースのアプローチを提供しています。GETPIVOTDATAFILTERのような関数はピボットテーブルのフィルタ設定自体を変更しませんが、ユーザー入力に応じて動的に参照し、サマリー結果を提示することができます。

この解決策は、カスタムサマリーテーブルやダッシュボード、レポートを作成する際に特に有用です。ユーザーが入力した基準が変更されても元のピボットテーブルビューは変更されません。

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を更新すると、結果は即座に更新されます。

ピボットテーブルのグループ分けに一致させたり、複数の条件でフィルタリングするには、GETPIVOTDATAFILTERを組み合わせるか、追加の論理条件で数式を拡張することを検討してください。

📝 ヒント&警告:

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

その他の組み込みExcelメソッド – スライサーをインタラクティブなピボットテーブルフィルターとして使用する

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

スライサーを追加して使用する方法:

  1. ピボットテーブル内の任意のセルを選択します。
  2. ピボットテーブル分析タブ(または古いバージョンの場合は分析タブ)に行き、「スライサーの挿入」をクリックします。
  3. スライサーの挿入」ダイアログボックスで、フィルタリングしたいフィールド(例:カテゴリ)にチェックを入れ、OKをクリックします。
  4. スライサーがワークシートに表示されます。ボタンをクリックして、その値でピボットテーブルをフィルタリングします。Ctrlキーを押しながら複数の項目を選択できます。

スライサーはフォーマットやサイズ変更ができ、複数のピボットテーブルにリンクして異なるレポート間で同期フィルタリングを行うことができます。スライサーは、特にドロップダウンフィルターに慣れていないユーザー向けのダッシュボードや共有ワークブックにおいて、VBAや数式を編集せずにデータを簡単にフィルタリングできるツールとして非常に便利です。

制限事項: スライサーはセル値へのネイティブリンクをサポートしていません。ワークフローでセル入力によって動的なフィルタリングが必要な場合、スライサーはVBAや数式ベースの方法の代替手段というよりも補完的なツールと考えるべきです。

また、データがピボットテーブルではなくExcel表に格納されている場合でも、テーブルを選択して表デザインタブ>スライサーの挿入でスライサーを使用できます。

トラブルシューティング: スライサーがピボットテーブルをフィルタリングしていない場合、スライサータブまたは分析タブの「レポート接続」を確認し、正しいピボットテーブルに正しく接続されているか確認してください。

上記の各方法は異なる目的に役立ちます。VBAはセルリンクフィルタリングを直接可能にし、数式は結果を動的に表示し、スライサーはユーザーフレンドリーなグラフィカルフィルタリングを提供します。自動化、柔軟性、使いやすさの必要性に最も合致するアプローチを選んでください。従来のピボットテーブルドロップダウンフィルターは基本的なフォールバックオプションとして利用可能です。

関連記事:

最高のオフィス業務効率化ツール

🤖 Kutools AI Aide:データ分析を革新します。主な機能:Intelligent Executionコード生成カスタム数式の作成データの分析とグラフの生成Kutools Functionsの呼び出し……
人気の機能重複の検索・ハイライト・重複をマーキング空白行を削除データを失わずに列またはセルを統合丸める……
スーパーLOOKUP複数条件での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でタブによる編集・閲覧を実現
  • 新しいウィンドウを開かず、同じウィンドウの新しいタブで複数のドキュメントを開いたり作成できます。
  • 生産性が50%向上し、毎日のマウスクリック数を何百回も削減!

全てのKutoolsアドインを一つのインストーラーで

Kutools for Officeスイートは、Excel、Word、Outlook、PowerPoint用アドインとOffice Tab Proをまとめて提供。Officeアプリを横断して働くチームに最適です。

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