【スプレッドシート】条件式一覧!IF,IFS,SWITCH,IFERROR,IFNA

この記事は約8分で読めます。
スポンサーリンク
スポンサーリンク

【スプレッドシート】条件式一覧!IF,IFS,SWITCH,IFERROR,IFNA

スプレッドシートで、エクセル同様、条件によって計算式を変えたい場合、

・IFを使うと思います。

基本的には、「IF」と「IFERROR」を覚えて、

・IFを重ねて使用する。

ことで、やりたいことが実現できると思いますが、数式が非常に見づらいと思います。

そこで今回は、スプレッドシートの条件式

IF,IFS,SWITCH,IFEEROR,IFNA

について説明していきたいと思います。

スプレッドシートで使えるIFの種類は、5種類

スプレッドシートで使えるIFの種類は、下記の5種類となっています。
IFS,SWITCH,IFNAなどはあまりなじみがないのではないでしょうか?

IFIF(論理式, TRUE値, FALSE値)論理式が TRUE の場合はある値を返し、FALSE の場合は別の値を返します。
IFSIFS(条件1, 値1, [条件2, 値2], …)複数の条件を検証し、最初の TRUE 条件に対応する値を返します。
SWITCHSWITCH(式, ケース1, 値1, [既定値またはケース2, 値2], …)ケースの一覧に対して式をテストし、最初に一致するケースに対応する値を返します。いずれにも一致しない場合は、任意指定の既定値を返します。
IFERRORIFERROR(値, [エラー値])エラー値でない場合は 1 番目の引数を返します。エラー値である場合は 2 番目の引数を返します(指定した場合)。2 番目の引数を指定していない場合は空白が返されます。
IFNAIFNA(値, NAの場合の値)ある特定の値を検証し、#N/A エラーの場合は指定された値を返します。

それでは一つずつ説明していきたいと思います。

IF

まずは、IFです。

IFIF(論理式, 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 を返します。!= 演算子と同じです。 
ISLOGICALISLOGICAL(値)値が TRUE であるか FALSE であるかを検証します。 
ANDAND(論理式1, 論理式2)すべての引数が論理的に TRUE の場合は TRUE を返します。いずれかの引数が論理的に FALSE である場合は FALSE を返します。 
NOTNOT(論理式)論理値の逆を返します。TRUE のとき NOT は FALSE を、FALSE のとき NOT は TRUE を返します。 
OROR(論理式1, 論理式2)いずれかの引数が論理的に TRUE の場合は TRUE を返します。すべての引数が論理的に FALSE である場合は FALSE を返します。 

IFS

次はIFSです。

IFSIFS(条件1, 値1, [条件2, 値2], …)複数の条件を検証し、最初の TRUE 条件に対応する値を返します。

あまりなじみのない関数かと思いますが、
IF文を重ねて使用するような場合にIFSを使用することで、
非常に見やすい数式に変えることができます。

例えば、

=IF([テストの点]>=80,”合格”,IF([テストの点]>=60,”補習”,”不合格”))

という式があった場合、

=IFS([テストの点]>=80,”合格”,[テストの点]>=60,”補習”,[テストの点]<60,”不合格”)

と記載することで、上記のIF文と同じ結果を得ることができます。

メリットは

・だいぶすっきりしている。
・条件と出力結果がわかりやすい。

ことがあげられますが、デメリットは

・どの条件も当てはまらない場合、NAが返される。
・エクセルでは使えない関数なので、ダウンロードして使えない。

となっております。
全てに当てはまる条件式を入れる必要があります。

SWITCH

次に、SWITCH関数です。
これもスプレッドシート独自の関数になります。

SWITCHSWITCH(式, ケース1, 値1, [既定値またはケース2, 値2], …)ケースの一覧に対して式をテストし、最初に一致するケースに対応する値を返します。いずれにも一致しない場合は、任意指定の既定値を返します。

使い方としては、VLOOKUPと同じようなイメージで、
「対象セルが、○○だと▲▲と表示する。」
という使い方をします。

A列結果結果セルの数式
行11CASE1=SWITCH(A1,1,”CASE1″,3,”CASE2″,5,”CASE3″,”NA”)
行23CASE2=SWITCH(A2,1,”CASE1″,3,”CASE2″,5,”CASE3″,”NA”)
行35CASE3=SWITCH(A3,1,”CASE1″,3,”CASE2″,5,”CASE3″,”NA”)
行47NA=SWITCH(A4,1,”CASE1″,3,”CASE2″,5,”CASE3″,”NA”)
行55CASE3=SWITCH(A5,1,”CASE1″,3,”CASE2″,5,”CASE3″,”NA”)

また、SWITCH関数は、列一気に指定することができ、
下記のように記述しても、同じ結果が得られます。

エクセルに慣れている人は、数式が入力されていないセルに、結果が表示されるので、
少々戸惑うかもしれません。

A列結果数式
行11CASE1=SWITCH(A1:A5,1,”CASE1″,3,”CASE2″,5,”CASE3″,”NA”)
行23CASE2
行35CASE3
行47NA
行55CASE3

メリットとしては、

・条件が見やすい
・どれにも当てはまらない場合の値も返してくれる。

ことがあげられますが、デメリットは、

・条件式が、=だけしか使用できない

ことになります。
どれにも当てはまらない場合も値を返してくれるので、
IFSの上位互換として使用したい気持ちはやまやまなのですが、
残念ながら、以上、以下などが使えないのがデメリットになります。

IFERROR,IFNA

最後に、IFERROR,IFNAです。

条件式が、エラー値であった場合、2番目の因数を返す関数になります。

IFERRORIFERROR(値, [エラー値])エラー値でない場合は 1 番目の引数を返します。エラー値である場合は 2 番目の引数を返します(指定した場合)。2 番目の引数を指定していない場合は空白が返されます。
IFNAIFNA(値, 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)
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を重ねた関数より、非常に見やすい数式となる」

ので、自分だけでなく、他の人とスプレッドシートを共有するときに、
使うといいかもしれませんね!

コメント欄

タイトルとURLをコピーしました