Excel関数 逆引き集 | 部分一致判定 → SEARCH

Excel
スポンサーリンク

概要

「この文章の中に『東京』という文字が含まれているか知りたい」
「商品名に『限定』が入っている行だけ、フラグを立てたい」
「メールアドレスの中に『@gmail.com』を含むか判定したい」

こういう “文字列のどこか一部に、特定の文字列が含まれているか” を調べるときに使うのが SEARCH関数です。

SEARCH は、
「探したい文字列が、何文字目に現れたか」を返してくれます。
見つかれば位置(1,2,3…)、見つからなければエラー。
これを利用して、部分一致の「あり/なし」を判定していきます。


SEARCH関数の基本

書式と意味

SEARCH関数の基本形は次のとおりです。

=SEARCH(検索文字列, 対象文字列, [開始位置])

検索文字列
探したい文字列。たとえば "東京""限定" など。

対象文字列
この中から検索します。通常はセル参照(例:A2)を指定します。

開始位置(省略可)
「何文字目から検索を始めるか」。省略すると 1(先頭)から探します。

例えば、A2 に
東京限定セール開催中
と入っているとき、

=SEARCH("限定", A2)

の結果は、

「限」が 3 文字目にある → 3

となります。
見つからなければ #VALUE! エラーになります(これを IFERROR などで処理します)。


部分一致「しているか/いないか」を判定する基本パターン

見つかったら TRUE、なければ FALSE にする

SEARCH は「位置」を返しますが、
部分一致判定で欲しいのは「あるか・ないか」です。

「見つかっていれば TRUE、なければ FALSE」にする定番パターンはこうです。

=ISNUMBER(SEARCH("限定", A2))

SEARCH(“限定”, A2) の結果は

  • 見つかった場合 → 1以上の数値(位置)
  • 見つからない場合 → エラー

ISNUMBER(…) は「数値なら TRUE、そうでなければ FALSE」なので、

  • 含まれていれば TRUE
  • 含まれていなければ FALSE

という “部分一致フラグ” が作れます。

この形は、フィルターや条件付き書式、IF と組み合わせるときの「基本の型」としてそのまま覚えてしまってください。


IF と組み合わせて「条件ラベル」をつける

例:商品名に「限定」が含まれるかで分類

A2 に商品名が入っているとして、

  • 「限定」が含まれていれば「限定品」
  • 含まれていなければ空白(何も表示しない)

としたい場合は、こう書きます。

=IF(ISNUMBER(SEARCH("限定", A2)), "限定品", "")

流れは次のとおりです。

  1. SEARCH(“限定”, A2)
    → 「限定」が何文字目か(またはエラー)
  2. ISNUMBER(…)
    → 数値なら TRUE(含まれている)
  3. IF(その結果, “限定品”, “”)
    → TRUE なら「限定品」、FALSE なら空白

「部分一致したらラベル付け」は、このパターンをベースにすればほとんど対応できます。


SEARCH と FIND の違い(大文字小文字)

SEARCH とよく似た関数に FIND があります。

  • SEARCH … 大文字小文字を区別しない
  • FIND … 大文字小文字を区別する

例えば、A2 に "Excel" と入っているとき、

=SEARCH("excel", A2)   ' → 1(見つかる)
=FIND("excel", A2)     ' → エラー(大文字小文字が違う)

という違いがあります。

「とにかく含まれていればOK(大文字小文字を無視)」なら SEARCH。
「正確に ‘ABC’ だけを探したい(’abc’ はNG)」なら FIND を使います。

今回の「部分一致判定」の文脈では、
SEARCH=「ゆるく探す」ための関数 と覚えておくと使い分けしやすいです。


応用1:複数キーワードのどれかを含むか判定(OR)

例:「東京」または「大阪」を含む行だけ「対象」

A2 に住所や店舗名が入っているとして、

  • 「東京」または「大阪」のどちらかが含まれていれば「対象」
  • どちらも含まれていなければ「対象外」

にしたい場合は、OR と組み合わせます。

=IF(
  OR(ISNUMBER(SEARCH("東京", A2)),
     ISNUMBER(SEARCH("大阪", A2))),
  "対象",
  "対象外"
)

OR の中に「SEARCH+ISNUMBER」の条件を並べていくイメージです。


応用2:メールアドレスのドメイン判定

A2 にメールアドレスが入っているとします。

例:
yamada@gmail.com
tanaka@example.co.jp

「@gmail.com を含んでいるか」で判定したい場合。

=ISNUMBER(SEARCH("@gmail.com", A2))

TRUE → Gmail
FALSE → それ以外

として扱えます。

ラベルをつけるなら、

=IF(ISNUMBER(SEARCH("@gmail.com", A2)), "Gmail", "")

のように IF を組み合わせればOKです。


応用3:前後に文字があってもOKな「ゆるい検索」

SEARCH は、「検索文字列が途中にあってもOK」です。

A2:2026年春限定キャンペーン

=SEARCH("限定", A2)   ' → 5(5文字目に「限」)

前に「2026年春」があっても、
後ろに「キャンペーン」が続いていても、
「限定」を含んでいれば、きちんと見つけてくれます。

セル全体が完全一致している必要はないので、

  • 「○○を含む行だけ集計したい」
  • 「△△を含むデータに色をつけたい」

といった、「フィルター的な検索」にとても向いています。


エラー対策:見つからないときの処理

SEARCH は「見つからないとエラー(#VALUE!)」になるので、
「含まれていないケースも普通にある」前提なら、
そのままだと見栄えが悪くなります。

最もよく使う対策は IFERROR です。

見つからなければ 0、見つかれば位置

=IFERROR(SEARCH("限定", A2), 0)
  • 「限定」を含む → 位置(1以上の数値)
  • 含まない → 0

のように整理できます。

見つからなければ「含まれない」と表示

=IFERROR(SEARCH("限定", A2), "含まれない")

などとすれば、「含まれない」という文字列にできます。

ただし、「含まれる/含まれない」の判定だけなら、
前述の ISNUMBER(SEARCH(...)) を使ったほうがシンプルです。


問題1

A2 に商品名が入っています。
商品名に「限定」という文字が含まれている場合は TRUE、含まれていない場合は FALSE を返す式を書いてください。
SEARCH と ISNUMBER を使ってください。

=ISNUMBER(SEARCH("限定", A2))

問題2

A2 に商品名が入っています。
商品名に「セール」が含まれている場合は「セール対象」、含まれていない場合は空白 “” を返す式を書いてください。
SEARCH と IF、ISNUMBER を組み合わせてください。

=IF(ISNUMBER(SEARCH("セール", A2)),"セール対象","")

問題3

A2 に住所が入っています。
住所に「東京」または「大阪」のどちらかが含まれている場合に「対象」、どちらも含まれていない場合は「対象外」と表示する式を書いてください。
SEARCH と ISNUMBER、OR、IF を使ってください。

=IF(OR(ISNUMBER(SEARCH("東京",A2)),ISNUMBER(SEARCH("大阪",A2))),"対象","対象外")

問題4

A2 にメールアドレスが入っています。
メールアドレスに「@gmail.com」が含まれている場合は「Gmail」、含まれていない場合は空白 “” を返す式を書いてください。

=IF(ISNUMBER(SEARCH("@gmail.com",A2)),"Gmail","")

問題5

A2 に商品名が入っています。
商品名に「限定」が含まれている場合は、その位置(何文字目か)を数字で返し、含まれていない場合は 0 を返したいです。
SEARCH と IFERROR を組み合わせた式を書いてください。

=IFERROR(SEARCH("限定",A2),0)

SEARCH を使った部分一致判定の“型”は、この2つです。

=ISNUMBER(SEARCH("キーワード", 対象セル))          ' TRUE/FALSE判定
=IF(ISNUMBER(SEARCH("キーワード", 対象セル)), … )   ' 条件分岐

この型さえ身につければ、
「○○を含む行だけ」「△△を含むデータだけ」という抽出やマーキングを、
関数だけでどんどん自動化できるようになります。

Excel
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました