エクセルで特定の文字を含む行を抽出する方法|FILTER関数・別シート対応

Excelで特定文字を含む行を自動抽出するFILTER関数の使用例

エクセルで「営業」などの特定の文字を含む行をまとめて取り出すには、FILTER関数とISNUMBER・SEARCH関数を組み合わせます。下の例では、部署がB列、取り出す表がA~C列です。

無料Excelサンプルで、まず試してみる

検索する文字を変えるだけで、条件に合う人の一覧が切り替わります。数式は入力済みなので、まずは完成例を動かしてみましょう。

行抽出のExcelサンプルをダウンロード(無料)

Excelファイル(.xlsx)/登録不要/数式・練習データ入り
対応:Microsoft 365・Excel 2021・Excel 2024

ダウンロードしたら、この3ステップ

  1. ダウンロードしたファイルを開き、「Sheet1」を選びます。
  2. 黄色いE2セルの「営業」を「経理」に変更して、Enterキーを押します。
  3. 右側のE5:G5に「佐藤花子・経理部・200」が表示されれば成功です。
FILTER関数で部署に営業を含む3行を抽出したサンプル
左が元データ、右が抽出結果です。最初は営業部の3人が表示されています。

別シートへの抽出を試すときは「抽出結果」シートのB1を変更します。D列などの1・0は計算用の補助列なので、最初は編集せずに進めてください。

開いたときに保護ビューが表示され、入力できない場合は、ファイルの入手元を確認して「編集を有効にする」を選んでください。

=FILTER(A2:C6,ISNUMBER(SEARCH("営業",B2:B6)),"該当なし")

Microsoft 365・Excel 2021・2024で使えます。Excel 2019・2016では、後半の「テキストフィルター」を使ってください。

やりたいこと使う方法
元データを変えたら抽出結果も更新したいFILTER+ISNUMBER+SEARCH
別シートに一覧を作りたい抽出先に、元シートを参照するFILTER式を入力
Excel 2019・2016で抽出したいテキストフィルターの「指定の値を含む」
セルの中の文字だけ切り出したい文字列の抽出方法(LEFT・MID・RIGHTなど)
目次

サンプルデータと数式を入れる位置

練習ファイルの「Sheet1」には、次の表がA1:C6に入っています。1行目は見出し、データは2~6行目です。

Excelの行A列:氏名B列:部署C列:売上
2田中太郎営業部100
3佐藤花子経理部200
4鈴木一郎営業部300
5山田次郎人事部150
6高橋恵子営業部250

黄色いセルを変更すると抽出結果が変わります。「Sheet1」は同じシートでの抽出、「抽出結果」は別シートへの抽出です。判定の途中経過が分かるように、サンプルでは補助列で1(該当)・0(非該当)を表示しています。

サンプルのSheet1では、E2が検索文字、D2:D6が各行の判定、E5:G7が抽出結果です。E5の式は=FILTER(A2:C6,D2:D6,"該当なし")です。D2には次の式を入れて6行目までコピーしています。検索文字を空にすると判定はすべて0になり、「該当なし」と表示されます。

=--AND(LEN($E$2)>0,ISNUMBER(SEARCH($E$2,B2)))

先頭の--はTRUE・FALSEを1・0に変換します。このあと紹介する補助列なしの式も、同じE5セルへ置き換えて試せます。

FILTER関数で特定の文字を含む行をすべて抽出する

  1. Sheet1のE5セルを選びます。
  2. 冒頭の数式を貼り付けてEnterキーを押します。
  3. E5:G7に、部署名に「営業」を含む3人のデータが表示されます。
氏名部署売上
田中太郎営業部100
鈴木一郎営業部300
高橋恵子営業部250

「営業部」と完全に同じでなくても、「営業一課」「海外営業部」など「営業」を含む部署が対象です。

数式の読み方

  • SEARCH("営業",B2:B6):各部署名から「営業」を探し、見つかった位置を数値で返します。見つからない場合はエラーになります。
  • ISNUMBER(...):位置が数値で返った行をTRUE、見つからなかった行をFALSEにします。
  • FILTER(A2:C6,...,"該当なし"):TRUEの行をA~C列まとめて取り出します。1件もなければ「該当なし」と表示します。

この式はSEARCHで見つからない場合をFALSEにします。検索対象セル自体がエラーの場合も抽出対象から外れるため、元データのエラーは先に確認してください。

検索する文字をセル入力で切り替える

E2に「営業」と入力し、E5を次の式に変えると、E2の文字を書き換えるだけで検索できます。E2が空白のときは案内を表示します。

=IF(E2="","検索文字を入力",FILTER(A2:C6,ISNUMBER(SEARCH(E2,B2:B6)),"該当なし"))

E2に「経理」と入れると佐藤花子さんの1行が表示されます。SEARCHは英字の大文字・小文字を区別しません。また、*と?はワイルドカードです。記号そのものを探す場合は~*、~?と指定します。

別シートに抽出結果を自動表示する

サンプルの「抽出結果」シートでは、B1が検索文字、A3:C3が見出し、A4が結果を表示するセルです。E4:E8で元データの各行を判定し、A4の=FILTER('Sheet1'!A2:C6,E4:E8,"該当なし")で抽出しています。

E4には次の判定式を入れ、E8までコピーしています。

=--AND(LEN($B$1)>0,ISNUMBER(SEARCH($B$1,'Sheet1'!B2)))
別シートにFILTER関数の抽出結果を表示するサンプル
「抽出結果」シートのB1で検索文字を指定。元データはSheet1に置いたままです。

補助列を使わず1つの式で書く場合は、A4を次の式に置き換えます。自分で作る場合も、同じセル位置ならそのまま使えます。

=IF(B1="","検索文字を入力",FILTER('Sheet1'!A2:C6,ISNUMBER(SEARCH(B1,'Sheet1'!B2:B6)),"該当なし"))

'Sheet1'!は元データのあるシートを表します。B1は抽出結果シートの検索文字です。Sheet1の部署や売上を変更すると抽出結果にも反映されます(計算方法が「自動」の場合)。

シート名が違う場合はSheet1を実際の名前に変えます。数式入力中に元シートをクリックして範囲を選ぶと、シート名の入力間違いを防げます。

この例は6行目までが対象です。7行目以降にもデータを追加する場合は、A2:C6とB2:B6の終端を同じ行まで広げてください。行追加が多い表では、元データをExcelテーブルにして構造化参照を使う方法もあります。

複数条件で行を抽出する

サンプルのA16にはAND条件、E16にはOR条件の式があります。I列・J列で「営業を含む」「経理を含む」をそれぞれ判定しています。下の本文では補助列なしで書く式を示します。

FILTERのAND条件とOR条件による抽出結果の比較
左は営業かつ売上200以上の2人。右は営業または経理の4人です。

「営業を含む」かつ「売上200以上」(AND条件)

=FILTER(A2:C6,ISNUMBER(SEARCH("営業",B2:B6))*(C2:C6>=200),"該当なし")

条件を*でつなぐと、両方を満たす行だけが対象になります。この表では鈴木一郎さん(300)と高橋恵子さん(250)の2行です。

「営業」または「経理」を含む(OR条件)

=FILTER(A2:C6,(ISNUMBER(SEARCH("営業",B2:B6))+ISNUMBER(SEARCH("経理",B2:B6)))>0,"該当なし")

条件を+でつなぎ、1つ以上満たす行を取り出します。この表では人事部を除く4行が対象です。1行が両方の条件を満たしても、その行が二重に出ることはありません。

部署名が「営業部」と完全に一致する行だけ

=FILTER(A2:C6,B2:B6="営業部","該当なし")

「営業一課」などを含めたくない場合はこちらです。複数条件の考え方はFILTER関数の複数条件による抽出でも解説しています。

Excel 2019・2016ではテキストフィルターを使う

  1. 見出しを含めてA1:C6を選び、「データ」→「フィルター」をクリックします。
  2. B列「部署」のフィルターボタンを開き、「テキストフィルター」→「指定の値を含む」を選びます。
  3. 「営業」を入力して確定します。該当する3行だけが表示されます。
  4. 別の場所へコピーする場合は、表示中の表を選び、「ホーム」→「検索と選択」→「条件を選択してジャンプ」で「可視セル」を指定してからコピーします。
  5. 新しいシートのA1などへ貼り付けます。

これは手動操作です。元データを変更したらフィルターを再適用し、必要に応じてコピーし直します。検索ダイアログで見つかったセルを選ぶだけでは、氏名・部署・売上の行全体を抽出したことにはなりません。

抽出できない・エラーになるときの確認点

症状確認すること
#NAME?、または_xlfn.が表示されるFILTERに対応しているExcelか確認。2019・2016ではテキストフィルターを使用。
#SPILL!結果を広げる先に値や結合セルがないか確認。式はExcelテーブルの外に入力。
#VALUE!抽出範囲と条件範囲の行数をそろえる。A2:C6ならB2:B6を指定。
該当なし検索文字、検索対象の列、全角・半角や余分な空白を確認。
検索文字を消すと全件出る空文字をSEARCHに渡さないよう、セル入力の例のIFを使用。
追加した行が表示されないすべての対象範囲を、新しい最終行まで広げる。

よくある質問

英字の大文字と小文字を区別できますか?

できます。SEARCHをFINDに変更します。たとえばISNUMBER(FIND("ABC",B2:B6))なら大文字のABCを含む行が対象です。

抽出した結果を編集できますか?

FILTERの結果は元データと数式から決まります。結果の途中のセルを直接書き換えるのではなく、元データを編集します。固定の一覧として編集したい場合は、結果をコピーして別の場所へ「値」で貼り付けます。

セルの一部分だけを取り出す方法とは違いますか?

この記事は条件に合う「行」を取り出す方法です。「ABC-123から123だけを取り出す」といった用途は、特定の文字より後ろを抽出する方法をご覧ください。

解説を読んだら、サンプルで試してみましょう

行抽出のExcelサンプルをダウンロード(無料)

開くシートと最初の操作をもう一度確認する

関連する解説・参考資料

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次