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

Excelでセルの値に基づいて行を自動フィルタするにはどうすればよいですか?

Author: Xiaoyang Last Modified: 2025-07-21

Excelでは、標準的なフィルター機能が提供するクイックな方法で、手動で選択した基準に基づいてデータをフィルタリングできます。ただし、一部のワークフローでは、特定のセルに値や条件を入力した直後にデータが自動的に更新されることを望む場合があります。たとえば、別のセルに入力したキーワードやパラメータに基づいてデータセットが即座にフィルタリングされるようにしたい場合、これはネイティブのExcelフィルタリング機能を超えるものとなります。このような動的または「自動フィルタ」は、データレビューのプロセスを合理化し、手動でのフィルタリングにかかる時間を削減し、フィルター条件を直接セルの値に結びつけることで精度を向上させることができます。この種のセル入力に基づく自動フィルタリングメカニズムを実装したい場合は、いくつかの実用的な解決策があります。

Excelの数式ソリューションを使用してセル値に基づいて行を自動フィルタリングする

VBAコードを使用して入力したセルの値に基づいて行を自動フィルタリングする


Excelの数式ソリューションを使用してセル値に基づいて行を自動フィルタリングする

マクロを使用しないアプローチを好む場合や、セキュリティ設定や共同作業に関する懸念からVBAを使用できない場合には、Excelに組み込まれている数式とフィルタリング機能を組み合わせて「自動フィルタ」効果を作成することができます。このソリューションは、Microsoft 365、Microsoft 2019以降のバージョンでサポートされているFILTERなどの動的配列関数で特に有効です。これは、マクロが無効になっている可能性のある同僚との共有や、インストール不要の軽量テンプレートに適しています。

1. フィルタされた結果を開始したい空白のセルを選択します(例:G2セルにカーソルを置きます)

=FILTER(A2:C20, (A2:A20=E1) * (B2:B20=E2), "No match")

2. G2に数式を入力した後、Enterキーを押します。フィルタされたデータセットは、G2から始まる範囲に表示されます。E1またはE2の値を変更すると、フィルタリングされたリストが即座に更新されます。

この数式の例では、主なデータがA2:C20にあると仮定し、フィルタ条件はE1(列Aに対応)およびE2(列Bに対応)に入力されています。1つの列だけでフィルタリングしたい場合は、論理条件を簡略化できます。「マッチなし」というメッセージは、基準に一致する行がない場合に表示されます。

ヒント: FILTER関数はMicrosoft 365および一部のMicrosoft 19+バージョンで利用可能です。古いバージョンのExcelでは、数式による動的フィルタリングはそれほど簡単ではなく、ヘルパー列と従来のオートフィルタや高度なフィルタ機能を組み合わせる方法を検討することをお勧めします。互換性を確保するためにバージョンを確認してください。

このソリューションを使用すると、結果はワークシート上の新しい領域に表示され、生データを保護します。ただし、元のデータセットには影響を与えず、フィルタは表示結果のみに適用され、ソースデータの表示状態には影響しません。

潜在的なエラー: #NAME?#SPILL! エラーが表示される場合は、互換性のあるExcelバージョンを使用しているか確認し、結果範囲に結合されたセルがないか確認してください。また、フォーミュラのスプレッドエリアに他のデータを配置しないようにして、ブロックを防ぎます。


VBAコードを使用して入力したセルの値に基づいて行を自動フィルタリングする

特定のセルに入力した基準に基づいてレコードを自動的にフィルタリングしたいとします。たとえば、E1やE2のセルに希望する条件を入力すると、ワークシート上のデータがこれらの値に一致するように自動的にフィルタリングされます。以下に示すように動作します。

a screenshot of filtering rows based on entered value in a cell

このようにフィルタリングを自動化するには、シンプルなVBAソリューションを設定できます。この方法は、指定したフィルタセルの値を更新するたびにトリガーされます。これは特に、ダッシュボード、インタラクティブレポート、またはユーザーが中心的なパラメータセルからの動的フィルタリングを期待するテンプレートに有用です。

1. 入力したセルに基づいて行のフィルタリングを自動化したいワークシートに移動します。

2. Excelウィンドウ下部のシートタブを右クリックし、コンテキストメニューから「コードの表示」を選択します。表示されたMicrosoft Visual Basic for Applicationsウィンドウに次のVBAコードを大きな空白部分(通称コードウィンドウまたはワークシートモジュール)に貼り付けます。

VBAコード: 入力したセル値に基づいてデータを自動フィルタリングする

Private Sub Worksheet_Change(ByVal Target As Range)
'Updateby Extendoffice 20160606
   If Target.Address = Range("E2").Address Then
       Range("A1:C20").CurrentRegion.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("E1:E2")
   End If
End Sub

a screenshot showing how to use the VBA code

注意: このVBAコードでは、A1:C20はフィルタを適用するデータ範囲を指します。E2はフィルタ値を入力するセル(対象となる基準)、E1:E2はフィルタ条件として使用されるセルです。これらは必要に応じて変更できますが、データやフィルタ条件が配置されているワークシート構造に正確に合致するよう調整してください。また、正確なフィルタリングのために結合されたセルを避け、見出しを含める必要がある場合はデータ範囲に見出しを含めてください。

3. 次に、E1またはE2のセルにフィルタ条件を入力または変更します。Enterキーを押すと、VBAコードが自動的に実行され、入力した条件に一致する行だけが表示されるように指定されたデータ範囲がフィルタリングされます。

値を入力した後、フィルタがすぐに動作しない場合は、ワークブックでマクロ機能が有効になっていることを確認し、VBAコード内の範囲が現在のワークシートレイアウトに正しく一致しているか確認してください。複数ユーザーシナリオでは、この機能を正常に動作させるにはマクロを有効にする必要があることを他者に伝えてください。

このVBAメソッドは、動的なパラメータ駆動型のダッシュボード、データ入力用のインタラクティブテンプレート、または手動で再適用することが非効率的なフィルタ条件に関連するすべてのシナリオで特に有利です。ただし、ユーザーがマクロを無効にすると問題が発生する可能性があり、VBAベースのソリューションはコードが追加されたファイル固有のものです。

異なるExcelセキュリティ設定を持つ複数のユーザーが頻繁に基準を変更する必要がある場合、または広くファイルを共有する予定がある場合は、代替の数式ベースのソリューションやExcelアドインを検討することをお勧めします。


デモ: VBAコードを使用して入力したセル値に基づいて行を自動フィルタリングする

 

複数の基準やその他の特定の条件(テキストの長さ、大文字小文字の区別など)に基づいてデータをフィルタリングする

複数のフィルタ条件を組み合わせたり、テキストの長さ、大文字小文字の区別、または特定の期間に基づいてフィルタリングするなど、より高度なフィルタリング操作を行う必要がある場合、Excelの組み込みフィルタは不十分かもしれません。そのようなシナリオでは、Kutools for Excelスーパーフィルタ機能が複雑なフィルタ要件を簡単に効率的に管理するための実用的な方法を提供します。この機能は次のように役立ちます。

  • 複数の列にわたる複数の基準を適用する; セル内の文字数に基づいてデータをフィルタリングする
  • 大文字または小文字のテキストでフィルタリングする; 年、月、日、週、または四半期に基づいてデータをフィルタリングする

a screenshot of using Kutools for Excel to filter date by multiple criteria

Kutools for Excel: 300以上の実用的なExcelアドインを装備し、30日間の完全機能無料トライアル版を提供します。 今すぐダウンロードして無料トライアル!


最高のオフィス生産性ツール

🤖 Kutools AI アシスタント: データ分析を革命化する: インテリジェント実行   |  コード生成  |  カスタム数式の作成  |  データを分析しグラフを生成  |  拡張機能を呼び出す
人気の機能: 重複を見つけてハイライトまたはマーキング   |  空白行を削除   |  データを失わずに列またはセルを統合   |   丸める ...
スーパーLOOKUP: 複数条件のVLookup    複数値のVLookup  |   複数シートの検索   |   ファジーマッチ ....
高度なドロップダウンリスト: ドロップダウンリストを迅速に作成   |  依存ドロップダウンリスト   |  マルチセレクトドロップダウンリスト ....
列管理: 特定の数の列を追加  |  列を移動  |  非表示列の可視ステータスを切り替え  |  範囲と列を比較 ...
注目の機能: グリッドフォーカス   |  デザインビュー   |   強化された数式バー    ワークブック & ワークシート管理   |  オートテキスト ライブラリ (Auto Text)   |  日付ピッカー   |  データの統合   |  セルの暗号化/復号化    リストで電子メールを送信   |  スーパーフィルター   |   特殊フィルタ (太字/斜体/取り消し線をフィルタリング...) ...
トップ15のツールセット12 のテキストツール (テキストの追加, 特定の文字を削除, ...)  |  50以上 のグラフ の種類 (ガントチャート, ...)  |  40以上の実用的な 数式 (誕生日に基づいて年齢を計算する, ...)  |  19 の挿入ツール (QRコードの挿入, パスから画像を挿入, ...)  |  12 の変換ツール (単語に変換する, 通貨変換, ...)  |  7 の統合 & セルの分割ツール (高度な行のマージ, セルの分割, ...)  |  ...さらに多く

Kutools for ExcelでExcelスキルを強化し、これまでにない効率を体験してください。 Kutools for Excelは、300以上の高度な機能を提供し、生産性を向上させ、保存時間を節約します。  最も必要な機能を入手するにはここをクリック...


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

  • Word、Excel、PowerPoint、Publisher、Access、Visio、Projectでタブ付きの編集と読み取りを有効にします。
  • 新しいウィンドウではなく、同じウィンドウの新しいタブで複数のドキュメントを開いて作成します。
  • 生産性を50%向上させ、毎日数百回のマウスクリックを減らします!