Googleスプレッドシートで、条件分岐(もし~だったらAの処理、違かったらBの処理)の論理構造で処理したい場合には、IF関数・IFS関数を用います。この記事では、IF関数・IFS関数の使い方、構文の説明、具体的な例を取り上げて説明・解説していきます。
こんにちは。当ブログの管理人の『くろん』です。
30代サラリーマン、新規事業推進室に所属。ブラック企業勤め時代に身に着けた業務効率化ノウハウをアウトプットしていきます。
読んでくれた方の業務が一秒でも早く終わりますように!と願いながら記事書いていきます!
IF関数・IFS関数で何ができるの?
IF関数は、条件(もし~だったら)に対して正だった時と、誤だった時に出力する内容を変えることができる関数です。また、IFS関数は、複数の条件に対して、それぞれ正誤を判定して異なる値を返すことができる関数となります。
IF関数の使い方
IF関数の構文
IF関数の構文は、このような形になります。
=IF(論理式, TRUE値, FALSE値)
項目 | 内容 |
論理式 | 条件部分を記載する箇所。18以上だったら、男だったらなど。 |
TRUE値 | 論理式の条件に合致する(正)場合に返す値。 セルを指定してもよいし、さらに関数式を指定してもよい。 |
FALSE値 | 論理式の条件に合致しない(誤)場合に返す値。 セルを指定してもよいし、さらに関数式を指定してもよい。 |
IF関数の具体的な使い方
具体的に使い方を見ていきましょう。
とある顧客名簿(疑似個人情報データ生成サービスを利用して作成)を材料にして、考えていきます。
上司からこんなオーダーが入りました。
まずは、E2セルに記載する関数について考えてみます。
論理式(条件):もし、B2セルが「男」だったら→B2=”男”
TRUE値(正の場合):◯を出力する→”◯”
FALSE値(誤の場合):✕を出力する→”✕”
※文字列を条件式に指定したいときは、『”』で文字列を囲う必要があります。また、出力したい内容が文字列の場合も、『”』で囲う必要があります。
実際に書くとこんな感じになります。
=if(B2="男","◯","✕")
今回は、「男」という文字列一致で、セルの内容と完全に一致している文字列を抽出対象としたので問題ないのですが、例えば名前に「沢」を含んでいるセルを抽出したい場合には、少し工夫が必要になります。
別の記事でまとめたので、興味ある場合はこちらも合わせて御覧くださいー。
同じようにE2セルに記載する関数を考えてみます。
論理式(条件):もし、D2が「50以上」だったら→D2>=50
TRUE値(正の場合):◯を出力する→”◯”
FALSE値(誤の場合):✕を出力する→”✕”
※数字の大小を条件とすることも可能です。
=if(D2>=50,"◯","✕")
IF関数を用いて、複数の条件で判定を行う方法
ここまで紹介してきたのは、条件が一つだけのものでした。
でも、条件が複数に渡ることもそう珍しくないハズ。複数条件がある場合のIF関数の使い方についても合わせて紹介しておきます。
こんな感じで、複数の条件のオーダーが入りました。整理のために、条件分岐図を作ってみます。
E2セルに記述する関数について考えていきましょう。
論理式(条件1):もし、B2が『男」だったら
└TRUE値(条件1の正の場合)→論理式(条件2):D2が『50以上』だったら
└TRUE値(条件2の正の場合):◯を出力する
└FALSE値(条件2の誤の場合):✕を出力する
└FALSE値(条件1の誤の場合):✕を出力する
これを実際に関数で表現するとこうなります。
=if(B2="男",if(D2>=50,"◯","✕"),"✕")
少し関数が長くなりましたが、このような式になります。
条件1:B列が『男』だったらの正の場合の部分に、さらに別の条件(D列が50以上だったら)を入れた構造となっています。このような構造を『入れ子(ネスト)』と呼びます。
今回のようなパターンであれば、AND関数を用いて条件1の部分に複数の条件を組み込むことも可能です。
男性かどうか?正だったら、50歳以上かどうか?の順で確認するのではなく。
男性かつ50歳以上か?という確認の仕方をするイメージです。
生成される答えは同じなのですが、関数の読みやすさからいくと、後者のほうが分かりやすいのではないでしょうか。
=if(and(B2="男",D2>=50),"◯","✕")
AND関数は論理関数の一つで、複数の条件がすべて正だった場合に、TRUEを返すという関数になります。
このように条件の部分に、ANDやORを使って複数条件を盛り込むことも可能です。
IF関数の挙動を正しく理解する
さきほど「TRUEを返す」とさらっと書いてしまったのですが、IF関数の挙動について、もう少し深掘りしてみたいと思います。IF関数の論理式のところに、直接trueやfalse(ブール値という)を入力するとどうなるのか、まとめておきます。
No1、2のように、論理式を記載する箇所にtrueないし”true”と記載した場合、その条件が正と同じ判定になり、◯が出力されます。また、ブール的にtrueと1は同じ意味となるので、1と記載しても、やはり正と同じ判定になります。
また、No4,5のようにfalseとすると、今度はその条件が誤と同じ判定になるため、✕が出力されます。また、ブール的にfalseは0と同じ意味となるので、やはり誤となります。
では、空欄だとどういう判定となるのでしょうか?答えは条件が誤と同じ判定となります。
最後に、論理式に意味をなさない文字列を入れた場合については、エラーとなり関数自体動かなくなります。
IFS関数の使い方
IFS関数は、複数の条件に基づき、その条件ごとに返す数字を変えたいときに用いられます。IF関数を入れ子構造でも同じことができるのですが、関数の可読性(後で見直したり、別の人が見た時のわかりやすさ)の観点から、圧倒的にIFS関数のがわかりやすいです。
IFS関数の構文
IFS関数の構文は、このような形になります。
=IFS(条件1, 値1, [条件2, 値2, …])
項目 | 内容 |
条件1 | 一つめの条件式を指定します。 |
値1 | 条件1が正だった場合に返す値です。 |
条件2, 値2, … | 一つ前の条件が、誤だった場合に評価する次の条件とそれが正だった場合に返す値です。 |
IFS関数の具体的な使い方
IFS関数を用いた例として、とあるテストの点数に応じた評価を考えてみます。以下の表の通りに判定できるようにしてみます。
評価 | 条件 |
秀 | 90点以上 |
優 | 80点以上90点未満 |
可 | 60点以上80点未満 |
不可 | 60点未満 |
=ifs(B2>=90,"秀",B2>=80,"優",B2>=60,"可",true,"不可")
IFS関数は先頭のほうから順に条件式に従い評価され、正だったら値が返されます。誤だったら次の条件式の判定が行われます。なので、条件と正の値を記載する順番がとても重要になります。
また、IFS関数は、記載してある全ての条件に合致しない場合には、エラーが出力されます。
なので、データの種類によりますが、最後の条件に「true」を使うことで、それ以外をすべて拾うことができるので、エラーが出力されてしまい止まるのを防いでくれます。
セグメント | 条件 |
C層 | 男女4歳~12歳 |
T層 | 男女13歳~19歳 |
M1層 | 20歳~34歳の男性 |
M2層 | 35歳~49歳の男性 |
M3層 | 50歳以上の男性 |
F1層 | 20歳~34歳の女性 |
F2層 | 35歳~49歳の女性 |
F3層 | 50歳以上の女性 |
条件を細かくした例でも考えてみます。
マーケティングの界隈で用いられる、性別と年齢を用いた顧客のセグメント化について、IFS関数を用いて実現してみましょう。
=ifs(and(B2="男",D2>=50),"M3",and(B2="女",D2>=50),"F3",and(B2="男",D2>=35),"M2",and(B2="女",D2>=35),"F2",and(B2="男",D2>=20),"M1",and(B2="女",D2>=20),"F1",D2>=13,"T",D2>=4,"C",true,"その他")
IFS関数の条件の記載順の重要性
例えば、こんな条件で判定してーと来た場合注意が必要です。
①男だったら、男と出力してください。
②50歳以上だったら、50歳以上と出力してください。
このような条件だった場合、50歳以上の男だった場合、条件の記載順を考えないといけません。
最終的に表示されている状態がどちらのほうが良いのかというのは、そのデータごとに違うと思います。
大事なのは、このように状態のときに、どちらの判定を優先したのかというのが、チーム内で共有されているかどうかだと思います。ちょっと、気をつけておいてください。
まとめ
今回は、条件分岐の関数であるIF関数・IFS関数について紹介してみました。
関数のなかでも、使う頻度が高い部類に入るので、ぜひマスターして使いこなせるようになってください!