IF関数は部分一致を直接書けません(=IF(A2="*営業*",…) はNG)。=IF(COUNTIF(A2,"*営業*"),"○","×") または =IF(ISNUMBER(SEARCH("営業",A2)),"○","×") を使います。
「セルに『営業』という文字が含まれていたら○を付けたい」——このとき =IF(A2="*営業*","○","×") と書いても正しく判定されません。IF関数の比較(=)はワイルドカード(*)に対応していないためです。この記事では、部分一致を判定できる2つの定番パターンを解説します。
サンプルデータ
練習用のExcelファイルはこちらからダウンロードできます:
Excel-if-contains-text-1.xlsx(ダウンロード)
| A | B | |
|---|---|---|
| 1 | 部署名 | 判定 |
| 2 | 第一営業部 | |
| 3 | 総務部 | |
| 4 | 営業企画課 | |
| 5 | 経理部 |

方法1:IF+COUNTIF(ワイルドカード)
=IF(COUNTIF(A2, "*営業*"), "○", "×")
COUNTIFはワイルドカードが使える関数です。セルA2の中に「営業」を含めばカウントは1(=TRUE扱い)、含まなければ0(=FALSE扱い)になるため、そのままIFの条件に使えます。B2に入力してB5までコピーすると、第一営業部と営業企画課だけ○になります。
「営業で始まる」なら "営業*"、「営業で終わる」なら "*営業" と、ワイルドカードの位置で前方一致・後方一致も表現できます。
方法2:IF+ISNUMBER+SEARCH
=IF(ISNUMBER(SEARCH("営業", A2)), "○", "×")
SEARCH関数は「営業」が見つかればその位置(数値)を、見つからなければエラーを返します。ISNUMBERで「数値が返ったか=見つかったか」を判定してIFに渡す仕組みです。
大文字・小文字を区別したい場合は、SEARCHの代わりにFIND関数を使います(例: “Excel” と “excel” を区別)。
応用:複数キーワードのOR条件
「営業または企画を含む」の判定は、COUNTIFに配列定数を渡してSUMで合計します。
=IF(SUM(COUNTIF(A2, {"*営業*","*企画*"})), "○", "×")
応用:「含む行」をまとめて抽出したい場合
1行ずつ○×を付けるのではなく、含む行のデータ自体を抜き出したい場合はFILTER関数の出番です。
=FILTER(A2:A5, ISNUMBER(SEARCH("営業", A2:A5)), "該当なし")
まとめ
| やりたいこと | 数式 |
|---|---|
| 「営業」を含むか判定 | =IF(COUNTIF(A2,”*営業*”),”○”,”×”) |
| 含むか判定(別解) | =IF(ISNUMBER(SEARCH(“営業”,A2)),”○”,”×”) |
| 大文字小文字を区別して判定 | =IF(ISNUMBER(FIND(“Excel”,A2)),”○”,”×”) |
| 複数キーワードのOR判定 | =IF(SUM(COUNTIF(A2,{“*営業*”,”*企画*”})),”○”,”×”) |
| 含む行をまとめて抽出 | =FILTER(範囲, ISNUMBER(SEARCH(“文字”, 範囲))) |
▶ こんな場合はこちら:特定の文字を含む行をまとめて抽出する/文字列を比較する方法(EXACT・IF)

コメント