エクセルで「営業」などの特定の文字を含む行をまとめて取り出すには、FILTER関数とISNUMBER・SEARCH関数を組み合わせます。下の例では、部署がB列、取り出す表がA~C列です。
無料Excelサンプルで、まず試してみる
検索する文字を変えるだけで、条件に合う人の一覧が切り替わります。数式は入力済みなので、まずは完成例を動かしてみましょう。
Excelファイル(.xlsx)/登録不要/数式・練習データ入り
対応:Microsoft 365・Excel 2021・Excel 2024
ダウンロードしたら、この3ステップ
- ダウンロードしたファイルを開き、「Sheet1」を選びます。
- 黄色いE2セルの「営業」を「経理」に変更して、Enterキーを押します。
- 右側のE5:G5に「佐藤花子・経理部・200」が表示されれば成功です。

別シートへの抽出を試すときは「抽出結果」シートの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関数で特定の文字を含む行をすべて抽出する
- Sheet1のE5セルを選びます。
- 冒頭の数式を貼り付けてEnterキーを押します。
- 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)))

補助列を使わず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列で「営業を含む」「経理を含む」をそれぞれ判定しています。下の本文では補助列なしで書く式を示します。

「営業を含む」かつ「売上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ではテキストフィルターを使う
- 見出しを含めてA1:C6を選び、「データ」→「フィルター」をクリックします。
- B列「部署」のフィルターボタンを開き、「テキストフィルター」→「指定の値を含む」を選びます。
- 「営業」を入力して確定します。該当する3行だけが表示されます。
- 別の場所へコピーする場合は、表示中の表を選び、「ホーム」→「検索と選択」→「条件を選択してジャンプ」で「可視セル」を指定してからコピーします。
- 新しいシートの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だけを取り出す」といった用途は、特定の文字より後ろを抽出する方法をご覧ください。

コメント