見出し画像

【エクセル】条件分岐の関数はIF関数だけじゃないョ!

おはようございます。こんにちは。いたをです。

エクセルの関数を勉強していると必ず出てくるのが条件分岐のために使用する「IF関数」条件式を設定して、その条件が成立していれば1つ目の選択肢、成立していなければ2つ目の選択肢に分岐させることができる条件分岐の中で最も基本の関数です。

_φ(・_・ メモ
IF関数:指定した条件に応じて表示内容や処理を変えたい時に使う関数
=IF(条件式,条件が成立していた場合の処理,条件が成立していない場合の処理)

画像1

評価の欄に、平均点を条件として平均点以上なら「合格」、平均点未満なら「追試」と表示させるように数式を組んでみました。

それではこのようなときはどうでしょう?

画像2

80点以上を「優」、70点以上を「良」、60点以上を「可」、60点未満を「不可」と表示させるように3つの分岐を設けてIF関数を組んでいます。

=IF(D2>=80,"優",IF(D2>=70,"良",IF(D2>=60,"可","不可")))

関数の中に関数を・・・という、いわゆる「入れ子」構造で数式を組んでいるのですが、複数の条件を指定したい時に数式が複雑になってしまうという欠点が見事に現れていますよね。

もう少し簡単に数式を組むことはできないのでしょうか?

1.かなりシンプルに記述できる「IFS関数」がオススメです

エクセル2019以降(Office 365)の新しいバージョンでしたら、複数の条件に応じて処理や表示内容を変えたい時は、「IF関数」を入れ子構造にするのではなく、「IFS関数」を使うのがオススメです。

_φ(・_・ メモ
IFS関数:複数の条件を順に調べた結果に応じて異なる値を返します。
=IFS (論理式1, 真の場合1, 論理式2, 真の場合2, ..., 論理式127, 真の場合127)
※ 127個まで論理式を設定できます。

では早速先程の評価を表示させる数式をIFS関数を使って組んでみましょう。

画像3

IFS関数は、複数の条件に応じて表示内容を変えることのできる関数です。
どうです。とってもシンプルな数式ですね。

=IFS(D2>=80,"優",D2>=70,"良",D2>=60,"可",D2<60,"不可")

=IFS(条件式1,"条件を満たしたときの表示内容",
条件式2,"条件を満たしたときの表示内容",
条件式3,"条件を満たしたときの表示内容",
条件式4,"条件を満たしたときの表示内容")

条件と表示内容のペアを並列して記述することができることが利点になりまます。「論理式1」に条件を指定し、「真の場合1」にその条件を満たす時の表示内容を記述します。複数の条件がある場合は、このペアを順々に指定していけばよいのです。

IF関数は、実務でも登場回数の多い関数だと思いますが、複数条件を指定したい時、複雑になりすぎて困っていた人は、ぜひIFS関数を使ってみてください。便利すぎてもとに戻れなくなるかも(笑)

これで終りと思ったでしょ?
実は条件分岐の関数は他にもあるんです。

2.引数のリストから値を選ぶ・・・CHOOSE関数

CHOOSE関数は1つ目の引数を番号として、2つ目以降の番号に対する引数に分岐させる関数です。
えっ、ちょっと解りにくい・・・。

_φ(・_・ メモ
CHOOSE関数:引数のリストから値を選びます。
CHOOSE(インデックス, 値1, 値2, ..., 値254)
※ インデックス:[値1]〜[値254]のうち、何番目の値を選ぶかを、1〜254の数値で指定します。
※ 値:[インデックス]によって選択される値を指定します。引数は254個まで指定できます。

それでは実例を挙げてみましょう。

画像4

日付の欄C3セルに日付を入力すると、その日付に対して陰暦の月名を表示させる数式を組んでいます。

=CHOOSE(MONTH(C3),"睦月","如月","弥生","卯月","皐月","水無月","文月","葉月","長月","神無月","霜月","師走")

MONTH関数を使ってC3セルの日付から「何月」かを導き出していますね。そして、引数の「睦月」~「師走」の中から、順番に見ていき、1番目の「睦月」を取り出しているわけです。

条件式による分岐とはちょっと違うので解りにくいかもしれませんね。あくまで数式で判断されますので、数式はシンプルになります。

ただし、1つ目の数式の番号は1から始まる必要がありますが、工夫次第でそこはなんとでもなります。

3.複数の値を検索して一致した値に組み合わせられた結果を返す・・・SWITCH関数

SWITCH関数はエクセル2016で追加された新関数です。
CHOOSE関数はあくまで1から始まる連番の数字の番号で分岐することしかできませんでしたが、このSWITCH関数は、文字や連続していない数字でも分岐することが出来るようになっています。

_φ(・_・ メモ
SWITCH関数:複数の値を検索して一致した値に組み合わせられた結果を返します
=SWITCH(検索値, 値1, 結果1, 値2, 結果2, ..., 値126, 結果126, 既定の結果)
※1 検索値:検索する値を指定します。数値または文字列が指定できます。
※2 値:検索される値を指定します。数値または文字列が指定できます。
※3 結果:[検索値]が[値]に一致したときに返したい値を指定します。[値]と[結果]の組み合わせは126個まで指定できます。
※4 既定の結果:[検索値]が[値]のどれにも一致しなかったときに返したい値を指定します。この引数は省略可能です。

こちらも実例を挙げておきましょう。

画像5

顧客ランクが「A」なら「5%」、「B」なら「3%」、「C」なら「1%」、「D」なら「0.5%」と表示させるようにしています。
(あとの計算を考えたら適応割引率は数値で良かったのですが、今回は文字列として表記させています)

=SWITCH(D2,"A","5%","B","3%","C","1%","D","0.5%")

第1引数は比べるもの、次に比較するものの値と結果を交互に入力しています。
IFS関数では、比較する式を1回1回作らなければなりませんでしたが、SWITCH関数では条件を第1引数に設定してしまえば、以降は値と結果を入力していけばいいので、数式をシンプルにすることが出来ますね。

しかし、一致しない数値を検索することは出来ませんので注意が必要です。またどれも一致しなかった場合はエラーとなりますので、ISERROR関数などで一致しなかった場合の表記を用意しておかなければいけません。

4.まとめ

今日は「条件分岐の関数はIF関数だけじゃない!」というテーマでエクセルの分岐関数をご紹介しました。

2分岐する「IF関数」、多数に分岐できる「IFS関数」、番号で割り振る「CHOOSE関数」、値で割り振る「SWITCH関数」の4つでしたね。

いかがだったでしょうか。

他にも、一覧表に対しての値を求めるのであれば、「VLOOKUP関数」なんてのもあります。

できるだけ数式はシンプルに。アプリやパソコンに負荷をかけ過ぎないように分岐はできるだけしない方向性を持っていたほうがいいと思いますよ。
前任者からの引き継ぎや、改造、間違い探しなどの時に大変だったりしますからね。

それではまた。
お疲れさまでした。

***


この記事が参加している募集

さいごまで読んでいただき、まことにありがとうございました。 もし面白い記事だったなぁと思っていただけたら、是非!ぜひ「スキ」や「シェア」をお願いします。 戴いたサポートは、皆様の応援に使わせていただき、時々モチベーションUPのためのビール代に使わせてくださいまし。