【スプレッドシート】条件式一覧!IF,IFS,SWITCH,IFERROR,IFNA
スプレッドシートで、エクセル同様、条件によって計算式を変えたい場合、
・IFを使うと思います。
基本的には、「IF」と「IFERROR」を覚えて、
・IFを重ねて使用する。
ことで、やりたいことが実現できると思いますが、数式が非常に見づらいと思います。
そこで今回は、スプレッドシートの条件式
IF,IFS,SWITCH,IFEEROR,IFNA
について説明していきたいと思います。
スプレッドシートで使えるIFの種類は、5種類
スプレッドシートで使えるIFの種類は、下記の5種類となっています。
IFS,SWITCH,IFNAなどはあまりなじみがないのではないでしょうか?
IF | IF(論理式, TRUE値, FALSE値) | 論理式が TRUE の場合はある値を返し、FALSE の場合は別の値を返します。 |
IFS | IFS(条件1, 値1, [条件2, 値2], …) | 複数の条件を検証し、最初の TRUE 条件に対応する値を返します。 |
SWITCH | SWITCH(式, ケース1, 値1, [既定値またはケース2, 値2], …) | ケースの一覧に対して式をテストし、最初に一致するケースに対応する値を返します。いずれにも一致しない場合は、任意指定の既定値を返します。 |
IFERROR | IFERROR(値, [エラー値]) | エラー値でない場合は 1 番目の引数を返します。エラー値である場合は 2 番目の引数を返します(指定した場合)。2 番目の引数を指定していない場合は空白が返されます。 |
IFNA | IFNA(値, NAの場合の値) | ある特定の値を検証し、#N/A エラーの場合は指定された値を返します。 |
それでは一つずつ説明していきたいと思います。
IF
まずは、IFです。
IF | IF(論理式, TRUE値, FALSE値) | 論理式が TRUE の場合はある値を返し、FALSE の場合は別の値を返します。 |
説明不要だと思いますので、
代わりに、論理式として使える関数を紹介していきたいと思います。
論理式一覧
論理式として、一般的に使用される関数は、
下記の通りとなっています。
等号、不等号、以上、以下などの関数と、
AND,OR,NOT,などを駆使することで、
IF文の論理式を作成できます。
EQ(==) | EQ(値1, 値2) | 指定した 2 つの値が等しい場合は TRUE、等しくない場合は FALSE を返します。== 演算子と同じです。 |
GT(>) | GT(値1, 値2) | 1 つ目の引数が 2 つ目の引数より真に大きい場合は TRUE、そうでない場合は FALSE を返します。> 演算子と同じです。 |
GTE(>=) | GTE(値1, 値2) | 1 つ目の引数が 2 つ目の引数より大きいか等しい場合は TRUE、そうでない場合は FALSE を返します。>= 演算子と同じです。 |
LT(<) | LT(値1, 値2) | 1 つ目の引数が 2 つ目の引数より真に小さい場合は TRUE、そうでない場合は FALSE を返します。< 演算子と同じです。 |
LTE(<=) | LTE(値1, 値2) | 1 つ目の引数が 2 つ目の引数より小さいか等しい場合は TRUE、そうでない場合は FALSE を返します。<= 演算子と同じです。 |
NE(!=) | NE(値1, 値2) | 指定した 2 つの値が等しくない場合は TRUE、等しい場合は FALSE を返します。!= 演算子と同じです。 |
ISLOGICAL | ISLOGICAL(値) | 値が TRUE であるか FALSE であるかを検証します。 |
AND | AND(論理式1, 論理式2) | すべての引数が論理的に TRUE の場合は TRUE を返します。いずれかの引数が論理的に FALSE である場合は FALSE を返します。 |
NOT | NOT(論理式) | 論理値の逆を返します。TRUE のとき NOT は FALSE を、FALSE のとき NOT は TRUE を返します。 |
OR | OR(論理式1, 論理式2) | いずれかの引数が論理的に TRUE の場合は TRUE を返します。すべての引数が論理的に FALSE である場合は FALSE を返します。 |
IFS
次はIFSです。
IFS | IFS(条件1, 値1, [条件2, 値2], …) | 複数の条件を検証し、最初の TRUE 条件に対応する値を返します。 |
あまりなじみのない関数かと思いますが、
IF文を重ねて使用するような場合にIFSを使用することで、
非常に見やすい数式に変えることができます。
例えば、
=IF([テストの点]>=80,"合格",IF([テストの点]>=60,"補習","不合格"))
という式があった場合、
=IFS([テストの点]>=80,"合格",[テストの点]>=60,”補習”,[テストの点]<60,"不合格")
と記載することで、上記のIF文と同じ結果を得ることができます。
メリットは
・だいぶすっきりしている。
・条件と出力結果がわかりやすい。
ことがあげられますが、デメリットは
・どの条件も当てはまらない場合、NAが返される。
・エクセルでは使えない関数なので、ダウンロードして使えない。
となっております。
全てに当てはまる条件式を入れる必要があります。
SWITCH
次に、SWITCH関数です。
これもスプレッドシート独自の関数になります。
SWITCH | SWITCH(式, ケース1, 値1, [既定値またはケース2, 値2], …) | ケースの一覧に対して式をテストし、最初に一致するケースに対応する値を返します。いずれにも一致しない場合は、任意指定の既定値を返します。 |
使い方としては、VLOOKUPと同じようなイメージで、
「対象セルが、○○だと▲▲と表示する。」
という使い方をします。
例 | A列 | 結果 | 結果セルの数式 |
行1 | 1 | CASE1 | =SWITCH(A1,1,"CASE1",3,"CASE2",5,"CASE3","NA") |
行2 | 3 | CASE2 | =SWITCH(A2,1,"CASE1",3,"CASE2",5,"CASE3","NA") |
行3 | 5 | CASE3 | =SWITCH(A3,1,"CASE1",3,"CASE2",5,"CASE3","NA") |
行4 | 7 | NA | =SWITCH(A4,1,"CASE1",3,"CASE2",5,"CASE3","NA") |
行5 | 5 | CASE3 | =SWITCH(A5,1,"CASE1",3,"CASE2",5,"CASE3","NA") |
また、SWITCH関数は、列一気に指定することができ、
下記のように記述しても、同じ結果が得られます。
エクセルに慣れている人は、数式が入力されていないセルに、結果が表示されるので、
少々戸惑うかもしれません。
例 | A列 | 結果 | 数式 |
行1 | 1 | CASE1 | =SWITCH(A1:A5,1,"CASE1",3,"CASE2",5,"CASE3","NA") |
行2 | 3 | CASE2 | |
行3 | 5 | CASE3 | |
行4 | 7 | NA | |
行5 | 5 | CASE3 |
メリットとしては、
・条件が見やすい
・どれにも当てはまらない場合の値も返してくれる。
ことがあげられますが、デメリットは、
・条件式が、=だけしか使用できない
ことになります。
どれにも当てはまらない場合も値を返してくれるので、
IFSの上位互換として使用したい気持ちはやまやまなのですが、
残念ながら、以上、以下などが使えないのがデメリットになります。
IFERROR,IFNA
最後に、IFERROR,IFNAです。
条件式が、エラー値であった場合、2番目の因数を返す関数になります。
IFERROR | IFERROR(値, [エラー値]) | エラー値でない場合は 1 番目の引数を返します。エラー値である場合は 2 番目の引数を返します(指定した場合)。2 番目の引数を指定していない場合は空白が返されます。 |
IFNA | IFNA(値, NAの場合の値) | ある特定の値を検証し、#N/A エラーの場合は指定された値を返します。 |
同じような式なのですが、IFNAは#N/Aの時だけ、エラーと判断し、
IFERRORはすべてのエラーをエラー値と判断します。
例 | A列 | 結果 | 数式 |
行1 | #DIV/0! | エラー値です | =IFERROR(G36,"エラー値です") |
行2 | #DIV/0! | #DIV/0! | =IFNA(G37,"エラー値です") |
基本的には、IFERRORを使っておけばいいと思いますが、
条件式が間違っていることに気づけないこともありますので、
そのような場合はIFNAを使用するといいと思います。
≪参考≫エラーの種類
#NULL! (1) | NULL intersection セル指定の「:(コロン)」や「,(カンマ)」がない セル範囲に共通部分がない |
#DIV/0! (2) | DIVided by 0 0で割り算を行った |
#VALUE! (3) | Wrong type VALUE 不適切なデータが入っている |
#REF! (4) | A REFerence to a cell that does not exist セルが参照できない |
#NAME? (5) | Unrecognized NAME 関数名やセル範囲名などの名前が正しくない |
#NUM! (6) | An invalid NUMber 数値が大きすぎる/小さすぎる |
#N/A (7) | Not Available value 値がない |
まとめ
グーグルスプレッドシートで使える、
条件式一覧を確認してみました。
IFS , SWITCH
に関しては、スプレッドシートだけで使用できる関数になりますが、
「IFを重ねた関数より、非常に見やすい数式となる」
ので、自分だけでなく、他の人とスプレッドシートを共有するときに、
使うといいかもしれませんね!
コメント欄