Excel関数 逆引き集 | パターン一致判定 → SEARCH

Excel
スポンサーリンク

概要

「セルの中に、この文字列が含まれているか知りたい」
「“[重要]”と書かれている行だけフラグを立てたい」
「メールアドレスに @ が入っているかチェックしたい」

こういう “パターン(部分文字列)が含まれているかどうか” を判定するときに使うのが SEARCH 関数です。

SEARCH はざっくり言うと、

文字列の中から「探したい文字列」を探して
見つかった位置(何文字目か)を返す関数

で、その結果を使って
「見つかったら〇〇、見つからなかったら△△」
というパターン一致判定を行っていきます。


SEARCH 関数の基本

基本構文と動き

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

意味はこうです。

  • 検索文字列:探したい文字列(例:”重要”)
  • 対象文字列:どこから探すか(例:A2)
  • 開始位置:何文字目から探すか(省略可。通常は省略でOK)

SEARCH の返り値は、

  • 見つかった場合 → 「何文字目で見つかったか」(1以上の数字)
  • 見つからなかった場合 → エラー(#VALUE!

例:A2 に「本日の重要なお知らせ」と入っているとき

=SEARCH("重要",A2)

→ 4(「重」は4文字目)

この「数値 or エラー」を利用して、
「見つかったかどうか」の判定に使います。


パターン一致の基本:ISNUMBER+SEARCH

「含まれているかどうか」をTRUE/FALSEでほしい

SEARCH は「位置」を返すので、そのままだと少し扱いづらいです。
実務ではほとんどの場合、ISNUMBER とセットで使います。

=ISNUMBER(SEARCH("重要",A2))

A2 に「重要」が含まれていれば → 数値 → ISNUMBER が TRUE
含まれていなければ → #VALUE! → ISNUMBER が FALSE

つまり、

  • TRUE → パターン一致(含まれている)
  • FALSE → パターン不一致(含まれていない)

という “パターン一致判定の型” になります。


応用1:IF と組み合わせて「フラグ」や「ラベル」を付ける

例:重要フラグの付与

A2 に件名が入っているとして、
「重要」という文字が含まれていれば「重要」、
含まれていなければ空欄、というフラグを B2 に付けたい場合。

=IF(ISNUMBER(SEARCH("重要",A2)),"重要","")
  • A2 が「【重要】支払いのご案内」 → B2 = 「重要」
  • A2 が「ご連絡」 → B2 = 空欄

メール件名、タスク名、備考欄などからの キーワード判定 によく使います。


応用2:複数パターンのどれかに一致するかを判定

例:「至急」「重要」「要確認」のどれかが入っているか

A2 の中に、
「至急」または「重要」または「要確認」
のどれかが含まれていれば TRUE にしたい場合。

=OR(
 ISNUMBER(SEARCH("至急",A2)),
 ISNUMBER(SEARCH("重要",A2)),
 ISNUMBER(SEARCH("要確認",A2))
)

これを IF と組み合わせてラベル化することもできます。

=IF(
 OR(
  ISNUMBER(SEARCH("至急",A2)),
  ISNUMBER(SEARCH("重要",A2)),
  ISNUMBER(SEARCH("要確認",A2))
 ),
 "対応優先",
 ""
)

応用3:メールアドレスなどの形式チェック(簡易)

SEARCH は簡単な「形式チェック」にも使えます。
(本格的な正規表現ほど厳密ではありませんが、“最低限の形”を見る用途で)

例:メールアドレスっぽいかどうかを判定

A2 にメールアドレスが入っているとして、
「@」と「.」が両方含まれていれば TRUE とします。

=AND(
 ISNUMBER(SEARCH("@",A2)),
 ISNUMBER(SEARCH(".",A2))
)

簡易チェックなので完璧ではありませんが、
「明らかにおかしいもの」をざっくり弾く用途には使えます。


応用4:部分一致での検索・抽出(フィルタと併用)

SEARCH と ISNUMBER を使えば、
「この文字を含む行だけをフィルタで表示」といったこともできます。

例:B列に次の式を書いて、下へコピーします。

=ISNUMBER(SEARCH("東京",A2))

A列に住所や店舗名が入っているとき、
B列が TRUE の行だけフィルタで抽出すれば、
「“東京”を含む行だけ」を一覧できます。

このように、検索条件を関数で持たせておいて、オートフィルタで使うのが実務でもよくあるパターンです。


応用5:SEARCH と FIND の違い(大小区別の有無)

パターン一致でよく混同されるのが SEARCH と FIND です。

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

例:A2 = “Excel”

=SEARCH("ex",A2)  → 1(見つかる)
=FIND("ex",A2)    → エラー(大文字小文字が違うので見つからない)

「大小無視でパターン一致判定したい」なら SEARCH を使う、
という整理で覚えておくと迷いません。


パターン一致判定(SEARCH)の“型”まとめ

部分一致の基本判定(TRUE/FALSE)

=ISNUMBER(SEARCH("キーワード", 対象セル))

IF と組み合わせてラベル化

=IF(ISNUMBER(SEARCH("キーワード", 対象セル)), "ラベル", "")

複数キーワードのどれかに一致

=OR(
 ISNUMBER(SEARCH("語1",対象)),
 ISNUMBER(SEARCH("語2",対象)),
 ISNUMBER(SEARCH("語3",対象))
)

簡易形式チェック(2つ以上の記号が含まれるか)

=AND(
 ISNUMBER(SEARCH("記号1",対象)),
 ISNUMBER(SEARCH("記号2",対象))
)

問題1

A2 の文字列の中に「重要」という文字が含まれているかどうかを、
TRUE / FALSE で判定したいです。
SEARCH と ISNUMBER を組み合わせた式を書いてください。

=ISNUMBER(SEARCH("重要",A2))

問題2

A2 に件名が入っています。
件名に「至急」が含まれていれば「至急対応」、
含まれていなければ空欄を表示したいです。
SEARCH と IF を使った式を書いてください。

=IF(ISNUMBER(SEARCH("至急",A2)),"至急対応","")

問題3

A2 の文字列の中に「東京」という文字が含まれている行だけを抽出したいです。
B2 に TRUE / FALSE を出力する式を書いてください。

=ISNUMBER(SEARCH("東京",A2))

問題4

A2 の文字列に「至急」「重要」「要確認」のいずれかが含まれている場合に TRUE を返したいです。
SEARCH と ISNUMBER、OR を使った式を書いてください。

=OR(
 ISNUMBER(SEARCH("至急",A2)),
 ISNUMBER(SEARCH("重要",A2)),
 ISNUMBER(SEARCH("要確認",A2))
)

問題5

A2 にメールアドレスが入っています。
「@」と「.」が両方含まれている場合に TRUE を返したいです。
SEARCH、ISNUMBER、AND を使った式を書いてください。

=AND(
 ISNUMBER(SEARCH("@",A2)),
 ISNUMBER(SEARCH(".",A2))
)

SEARCH は「完全一致」ではなく “含まれているかどうか” を見る関数です。
ISNUMBER・IF・OR・AND と組み合わせることで、
キーワード判定、簡易バリデーション、フィルタ条件など、
“パターン一致判定”を柔軟に設計できるようになります。

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