概要
「この文章の中に『東京』という文字が含まれているか知りたい」
「商品名に『限定』が入っている行だけ、フラグを立てたい」
「メールアドレスの中に『@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)), "限定品", "")
流れは次のとおりです。
- SEARCH(“限定”, A2)
→ 「限定」が何文字目か(またはエラー) - ISNUMBER(…)
→ 数値なら TRUE(含まれている) - 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.comtanaka@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("キーワード", 対象セル)), … ) ' 条件分岐
この型さえ身につければ、
「○○を含む行だけ」「△△を含むデータだけ」という抽出やマーキングを、
関数だけでどんどん自動化できるようになります。
