【初心者向け】if関数で「指定した文字列」が含まれているかを調べる方法

このページでは、if関数を使って「指定した文字列が含まれているか」を調べる方法を紹介します。

セルの内容が指定した文字列と「一致する」

まずは、一番単純なパターンです。

たとえば、A2セルに「新宿」と入力されていれば「○」、それ以外の場合には「×」と表示させるには、次のような数式を入力します。

=IF(A2="新宿","○","×")
ifmojiretsu_1_1

「新宿」のような「文字列の条件」を入力するときには、周りをダブルクォーテーション(「"」 Shift + 2)で囲います。

注意点

単に「A2="新宿"」という条件を入力すると、セルA2に「新宿」と入力されている場合のみ「〇」となります。

逆に言うと、「新宿」という文字が入力されているが、他の文字も入力されている場合には、「×」と表示されてしまいます。

ifmojiretsu_1_2

セルの内容が指定した文字列を「含む」

たとえば、A1セルに「新宿」という文字が含まれていれば「○」、それ以外の場合には「×」と表示させるには、次のような数式を入力します。

ifmojiretsu_1_3

if関数の最初の引数が「 COUNTIFS(A2,"*新宿*")>0 」というようにかなり複雑になっています。

この数式は、次のような意味です。

COUNTIFS(A2,"*新宿*") A2セルの中で「新宿」という文字が「含まれる」セルの数
COUNTIFS(A2,"*新宿*")>0 A2セルのうちで「新宿」という文字が「含まれる」セルの数が0より大きい

何言ってるんだ?という感じだと思うのですが、

A2セルの中で「新宿」という文字が「含まれる」セルの数

かみくだいて書くと次のようになります。

  • A2セルに「新宿」という文字が含まれていなければ「0」
  • A2セルに「新宿」という文字が含まれていれば「1」

※なぜ、こういう意味になるのかは、すぐ後で書きます。

A2セルのうちで「新宿」という文字が「含まれる」セルの数が0より大きい

A2セルに「新宿」という文字が含まれていなければ「0」、含まれていれば「1」になるのですから、

「・・・が0より大きい」=「A2セルに新宿という文字が含まれている」

を意味することになります。

countifs関数の意味

先ほどの数式を理解するためには、いくつか知っておかないいけない知識があります。

その1つ目が「countifs関数についての知識」です。

countifs関数は、1つ目の引数で指定した範囲のうちで、2つ目の引数で指定した内容のセルが何個あるかを数える関数です。

たとえば、

=COUNTIFS(B2:B6,"出")

という数式であれば、「B2~B6セルの中で内容がであるセルの個数」を計算することになります。

ifmojiretsu_1_4

1つめの引数に「セルを1つだけ」指定していることに注意

今回の数式は、次のような数式でした。

=COUNTIFS(A2,"*新宿*")

1つめの引数が「1つのセル」しか指していないので、違和感を感じるかもしれませんが、考え方は先ほどの数式と一緒です。

さきほどの数式と同じように考えて、
A2セルの中で内容が*新宿*であるセルの個数」を計算することになります。

2つ目の引数の「*」の意味とは?

次に、必要な知識が、2つ目の引数の「*」の意味です。

上で書いたcountifs関数には、2つ目の引数に「"*新宿*"」というように「*」マークが「新宿」の前後に出てきます。

この「*」マークは、「ワイルドカード」と呼ばれる文字の一種で、特殊な意味を持っています。

具体的には、0文字以上の「すべての文字」を表す記号として使われます。

ある単語の後に「*」を入れた場合

たとえば、「"新宿*"」というように、新宿の後ろだけに「*」(アスタリスク)マークをつけると次のようなものは、すべて「条件に合うもの」として判断されます。

新宿駅西口 新宿駅西口 新宿の後に「駅西口」という文字が入っているので、条件に一致したと判断される
新宿駅 新宿 新宿の後に「駅」という文字が入っているので、条件に一致したと判断される
新宿 新宿 新宿の後に文字がないが、条件に一致したと判断される
西新宿駅 西新宿 新宿の前に「西」という余計な文字が入っているので、不一致と判断される
ifmojiretsu_1_5
ある単語の前に「*」を入れた場合

同様に、「"*新宿"」であれば、次のように判断されます。

西新宿 西新宿 新宿の前に「西」という文字が入っているので、条件に一致したと判断される
新宿 新宿 新宿の前に文字がないが、条件に一致したと判断される
新宿駅西口 新宿駅西口 新宿の後に「駅西口」という余計な文字が入っているので、不一致と判断される
西新宿駅 西新宿 新宿の後に「駅」という余計な文字が入っているので、条件に不一致と判断される
ifmojiretsu_1_6
単語の前・後の両方に「*」を入れた場合

「"*新宿*"」というように、単語の前後に「*」を入れると、次のように判断されます。

新宿駅西口 新宿駅西口 新宿の前に文字がない
新宿の後に「駅西口」という文字が入っている
ので、条件に一致したと判断される
新宿 新宿 新宿の前に文字がない
新宿の後にも文字がない
ので、条件に一致したと判断される
西新宿 西新宿 新宿の前に「西」という文字が入っている
新宿の後に文字がない
ので、条件に一致したと判断される
西新宿駅 西新宿 新宿の前に「西」という文字が入っている
新宿の後に「駅」という文字が入っている
ので、条件に一致したと判断される
ifmojiretsu_1_7

結局、

  • 「新宿」の前に何文字あってもOK
  • 「新宿」のあとに何文字あってもOK

ということになるので、結局「"*新宿*"」=「新宿を含む」という意味になるのです。

なぜ、わざわざcountif関数を使うのか?

ワイルドカードという便利なものがあるのなら、それをif関数に使って、次のように数式を書きたいところです。

でも、残念ながら、このようには書けません。

誤: =IF(A2="*新宿*","〇","×")

というのは、IF関数はワイルドカードには対応していないからです。

IF関数で上のような数式を書くと、「*」は「*」という文字として認識されてしまうのです

ifmojiretsu_1_8

要するに、ワイルドカードを使うために、無理矢理COUNTIFS関数を使っているだけなのです。

複数の文字列を条件に指定したいとき

たとえば、あるセルに「新宿」「渋谷」「品川」のどれかが入力されている場合のみ「〇」、それ以外のときは「×」と表示させるためには、次のようにOR関数を使った数式を入力します。

=IF(OR(A2="新宿",A2="渋谷",A2="品川"),"○","×")
ifmojiretsu_1_9

セルの内容が指定した「いずれかの文字列を含む」

IF関数の中にOR関数の中に「複数のCOUNTIFS関数を入れた」数式を入れることで、処理ができます。

たとえば、あるセルに「新宿」「渋谷」「品川」のどれかが含まれている場合のみ「〇」、それ以外のときは「×」と表示させるためには、次のような数式を入力します。

=IF( OR(COUNTIFS(A2,"*新宿*")>0, COUNTIFS(A2,"*渋谷*")>0, COUNTIFS(A2,"*品川*")>0), "○", "×")
ifmojiretsu_1_10

少し前に説明した《COUNTIFS関数にワイルドカード「*」を使った条件》をOR関数でつなぐことで、「いずれかの文字を含む」という条件を表現しています。

セルの内容が指定した「すべての文字列を含む」

IF関数の中に、AND関数の中に「複数のCOUNTIFS関数を入れた」数式を入れることで、処理ができます。

たとえば、あるセルに「新宿」「西」の両方が含まれている場合のみ「〇」、それ以外のときは「×」と表示させるためには、次のような数式を入力します。

=IF( AND( COUNTIFS(A2,"*新宿*")>0, COUNTIFS(A2,"*西*")>0), "○", "×")
ifmojiretsu_1_11

少し前に説明した《COUNTIFS関数にワイルドカード「*」を使った条件》をAND関数でつなぐことで、「すべての文字を含む」という条件を表現しています。

エクセル基礎講座 「無料」動画マニュアル

「経理事務のためのエクセル基礎講座(初級編)」(動画マニュアル 総収録時間162分)を無料プレゼント中です!

このマニュアルで解説していることを一通り学べば、経理事務を行う上で最低限必要となる知識が得られます。

ご登録者の方には、合わせて、公認会計士が実体験を通して身に付けたエクセルを使う技をメールにてお伝えしていきます!

無料動画講座 登録フォーム

※ご登録頂いたメールアドレスに、エクセルを使いこなすための情報を配信するメールセミナー「エクセル倍速講座」も合わせて配信させていただきます。