IF関数で「特定の文字列を含む」を条件にする方法|COUNTIF・SEARCHとの合わせ技

結論(先に答え)

IF関数は部分一致を直接書けません(=IF(A2="*営業*",…) はNG)。=IF(COUNTIF(A2,"*営業*"),"○","×") または =IF(ISNUMBER(SEARCH("営業",A2)),"○","×") を使います。

「セルに『営業』という文字が含まれていたら○を付けたい」——このとき =IF(A2="*営業*","○","×") と書いても正しく判定されません。IF関数の比較(=)はワイルドカード(*)に対応していないためです。この記事では、部分一致を判定できる2つの定番パターンを解説します。

目次

サンプルデータ

練習用のExcelファイルはこちらからダウンロードできます:
Excel-if-contains-text-1.xlsx(ダウンロード)

AB
1部署名判定
2第一営業部
3総務部
4営業企画課
5経理部
IF関数とCOUNTIF関数で特定の文字列を含むかどうかを判定する図解

方法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)

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次