残業を減らす!Officeテクニック

エクセルの「IFS関数」⇔「IF関数」変換のコツを覚えよう!

Excel 2013以前に作ったIF関数の式をIFS関数で扱いやすく改良するには?

同じ結果を得られる「IF」と「IFS」はどちらを使う?

 セルの値が「A」の場合は「B」のように、条件によって結果を取り出す関数といえば「IF」ですよね。複数条件も指定できます。しかし、複数のIF関数を入れ子(ネスト)にするのも、3つくらいが限界ではないでしょうか。「IF」「IF」「IF」「IF」…、と続くと混乱してしまいます。

 そんな時は新定番の「IFS」(イフ・エス)関数が便利。Excel 2016以降、Microsoft 365のExcelで利用できます。複数の条件を簡潔にできて処理の内容も理解しやすくなります。

 「S」が付いていることから連想できると思いますが、IFS関数は、条件(IF)の複数指定に特化しています。結論から言えば、旧バージョンのExcelで開くことがなく、複数の条件分岐が必要なら「S」なしの「IF関数」を使う必要はないでしょう。

 とはいえ、Excel 2013以前でファイルを開く可能性がある場合は「IF関数」の出番。IFS関数に慣れていると、IF関数のネストってどうやるんだっけ? と悩むこともあります。今回は、IFS→IFへの書き換えとIF→IFSへの書き換える際のコツを紹介します。

「IFS関数」と「IF関数」はどこが違う?

 最初に「IFS関数」の基本を振り返っておきましょう。IFS関数はネスト不要で「条件」と「結果」を並列に記述可能です。「論理式」に指定した条件式を満たせば「真の場合」の値が返されます。「どの条件にも一致しない」場合の指定も簡潔です。

「論理式1」を満たせば「真の場合1」、「論理式2」を満たせば「真の場合2」...、と指定する。「論理式」と「真の場合」のセットは127個まで指定可能

「IFS関数」と「IF関数」で得点に応じてランク付けする式を作ってみる

 簡単な例として、得点に応じて「A」「B」「C」「F」と表示する数式を考えてみます。IFS関数では「=IFS(A2>=80,"A",A2>=70,"B",A2>=60,"C",TRUE,"F")」となります。最後のセット「TRUE,"F"」は「どの条件にも一致しない」場合の指定です。定型句と考えてもいいと思います。

セルB2の数式は「=IFS(A2>=80,"A",A2>=70,"B",A2>=60,"C",TRUE,"F")」。最後のセット「TRUE,"F"」は「どの条件にも一致しない」場合の指定

 また、IFS関数の「論理式」と「真の場合」は先頭から判定されます。比較演算子を含む数式では、厳しい条件(ここでは「A2>=80」)から順番に指定するのがポイントです。このルールはIF関数も共通です。

 IF関数では「=IF(A2>=80,"A",IF(A2>=70,"B",IF(A2>=60,"C","F")))」と記述できます。「どの条件にも一致しない」場合の結果("F")は、一番内側のIF文に含めます。

先ほどのIFS関数の数式をIF関数で書き換えた例。「=IF(A2>=80,"A",IF(A2>=70,"B",IF(A2>=60,"C","F")))」となる。「どの条件にも一致しない」場合の結果(F)は、一番内側のIF文に含める

 さらに条件を追加してみます。以下の2つの数式はどちらも同じ結果を得られますが、IFS関数のほうが短く、スッキリとして見やすいですよね。

=IF(A2>=80,"A",IF(A2>=70,"B",IF(A2>=60,"C",IF(A2>=50,"D",IF(A2>=40,"D",IF(A2>=30,"E","F"))))))

=IFS(A2>=80,"A",A2>=70,"B",A2>=60,"C",A2>=50,"D",A2>=40,"D",A2>=30,"E",TRUE,"F")

 なお、IFS関数にひとつの条件を指定して、IF関数の代わりに使う時は「どの条件にも一致しない」場合の「TRUE,(結果)」の指定を忘れずに。これを省略して、「論理式」を満たさない場合「#N/A!」エラーとなります。

ひとつの条件を指定して「=IFS(A2>=60,"合格",TRUE,"不合格")」とすることも可能。最後の「TRUE,"不合格"」は忘れずに

IF/IFS関数を使ってVLOOKUP関数のように使うことも

 IF関数やIFS関数を使って、単純に文字列比較を条件にすることも可能です。以下の例では、会員ランクを判定して割引率を取得しています。しかし、このような場合はVLOOKUP関数を利用して「=VLOOKUP(D2,A2:B4,2,FALSE)」とするのが素直でしょう。IF関数やIFS関数は、比較演算子を利用して数値を判定する場合に優位性があります。

セルE2の数式は「=IFS(D2=A2,B2,D2=A3,B3,D2=A4,B4,TRUE,0)」。先ほどと同様、最後のセット「TRUE,0」は「どの条件にも一致しない」場合のこと

「IF関数」と「IFS関数」を変換するときのコツ

 前述の古いExcelでファイルを開く場合以外にも、古いExcelで作ったIF関数入りファイルを編集して使いまわす場合には、IFS関数へ書き換えておいたほうが後で楽になります。でも、使いやすくしようとして式を壊してしまっては元も子もありません。書き換えるときのコツを覚えておきましょう。

IF関数をIFS関数に書き換える

 IF関数からIFS関数への書き換えは単純です。ネストされている「IF(」をすべて削除し、最後の条件として「TRUE,」を追加するだけです。IF関数の最後の閉じカッコ「)))」は「)」が正しいのですが、修正はExcelに任せればいいでしょう。

「IF」の後ろにカーソルを移動して「S」を入力する
ネストされている「IF(」をすべて削除する
一番内側のIF文にあった最後の引数の直前に「TRUE,」と追加して[Enter]キーを押す
数式の修正確認のメッセージが表示される。[はい]をクリックする
IFS関数に修正後の状態

IFS関数をIF関数に書き換える

 IFS関数のデメリットは、バージョンが古いExcelで利用できないことです。IFS関数を含むファイルを旧バージョンのExcelで開くと「=_xlfn.IFS(A2>=80,"A",A2>=70,"B",A2>=60,"C",TRUE,"F")」のように表示されます。修正して欲しいと言われた時に悩まないように修正のコツを覚えておきましょう。

 「真の場合」に続く「,」の後ろに「IF(」を挿入することを意識して「TRUE,」を削除すればOK。数式の修正確認のメッセージが表示されるので[はい]をクリックします。これはIF関数の「)」を補完してもいいかどうかの確認です。IF関数の数だけ「)」が必要になるのですが、自分で数えて入力するのは面倒なので、IF→IFSの書き換えと同様にExcelに任せます。

数式バーでの修正がおすすめ。「IFS」の「S」を消去する
「真の場合」に続く「,」の後ろにカーソルを移動する
「if」と入力すると、関数の候補が表示される[IF]が強調表示されていることを確認して[Tab]キーを押す
「(」が補完されて「IF(」と入力された
先ほどと同様に「真の場合」に続く「,」の後ろにカーソルを移動して「IF(」を入力する
「TRUE,」を選択して削除する
「TRUE,」を削除した状態。このまま[Enter]キーを押す
数式の修正確認のメッセージが表示される。[はい]をクリックする
IF関数に修正後の状態