いきなり答える備忘録

Google Workspace(旧G Suite)・Microsoft 365・LibreOfficeなどに関するメモ

(Gスプレッドシート)IFS関数で「それ以外」の場合を指定する

 GoogleスプレッドシートのIFS関数は、IF関数やSWITCH関数と異なり、条件に該当しない場合(else)の出力を設定する機能がありません。これに対応する方法についてです。

  • IFS関数の最後の条件として「TRUE」と記せば「それ以外」の場合、つまり「それまでの条件にあてはまらなかった場合」を指定できます。
  • 値が当然満たしているはずの条件(0以上である、数値である、〇文字以内、など)を記す方法もあります。入力値の検査に利用できます。

手順

出力したい内容

 データと出力内容の確認です。
 C列に点数(0~100)が入力されています。これに基づき、次の基準で賞を判定しD列に出力するものとします。

・90点以上の場合
 ……優秀賞
・ちょうど77点の場合
 ……ラッキー7賞
・上記のどちらでもない場合
 ……参加賞


IF関数の場合とIFS関数での失敗例

 結果が3つに分かれますので、1つのIF関数だけではうまくいきません。IF関数のネスト(入れ子)を使って解決します。
 画像ではD3セルに次のように入力し、下にコピーしています(以下の例でも同様)。

 D3セル

=IF(C3>=90,"優秀賞",IF(C3=77,"ラッキー7賞","参加賞"))

 第1引数として90点以上という条件「C3>=90」を記し、第2引数としてそれを満たす場合の戻り値(賞の名前)「優秀賞」を指定します。
 第3引数は条件を満たさない場合の戻り値を記しますが、ここにさらにIF関数を入力し、77点の場合とそうでない場合の場合分けを行って賞の名前を出力しています。
 IF関数では条件を満たす場合と満たさない場合の戻り値をそれぞれ指定できるので、「満たさない場合」の具体的な条件を記述しなくて済みます。この例では、記述が面倒になる「参加賞」の具体的な条件を記さずに済んでいます。
 しかし3択以上の場合分けができないので、場合分けが増えるとネストが深くなり、式が複雑になります。


 そこでIFS関数の出番です。IFS関数なら、条件と戻り値を交互に列記していくだけで、最初に当てはまる条件に対応する戻り値を出力することができ、ネストが不要になるからです。
 しかし、IF関数のように(最後の)条件を省略しても、「それ以外」の場合とはみなしてくれず、画像のようにすべてエラーになってしまいます。

 D3セル(失敗例)

=IFS(C3>=90,"優秀賞",C3=77,"ラッキー7賞","参加賞")

 SWITCH関数だと最後に条件を省略して戻り値だけ記すと「それ以外」の戻り値になりますが、IFS関数では残念ながらそうはいきません。


IFS関数で「それ以外」の場合を指定する

最後の条件に「TRUE」を指定する方法

 上記の結果からわかるように、IFS関数では条件と戻り値の組をすべて具体的に記す必要があります。
 そこで、最後の条件として「TRUE」を指定すれば、「それ以外」を指定したのと同じ結果を得ることができます。

 D3セル

=IFS(C3>=90,"優秀賞",C3=77,"ラッキー7賞",TRUE,"参加賞")

 「TRUE」と記しておけば、”必ず満たされる条件”を記したのと結果になるので、「それ以外」の場合、つまりそれまでの条件に当てはまらなかった場合のすべてに該当させることができます。
 「TRUE」でなくても正しい式ならなんでもいいので「1=1」でもいいですし、単に「1」(あるいは0以外の数値)でもいいです。ただし一般にTRUEがよく使用されるのでTRUEにしておくのが無難です。

最後の条件に”当然満たすべき条件”を指定する方法

 上記のように「それ以外」を表す条件として「TRUE」が多用されますが、どうせ何か記すなら単純かつ意味のある条件を記すのも1つの方法です。
 次の画像では、最後の条件を「ISBETWEEN(C3,0,100)」としています。これは「AND(0<=C3,C3<=100)」と同じくC3の値が0以上100以下かどうかという意味で、(この例では)すべての値が満たしているはずの条件を記しています。こうすることで「TRUE」と記したのと同じような意味になりますし、その当たり前の前提条件を満たしていない値をエラーとして検出することができます。

 D3セル

=IFS(C3>=90,"優秀賞",C3=77,"ラッキー7賞",ISBETWEEN(C3,0,100),"参加賞")

 場合によっては”当たり前の条件”も複雑になりますし、そもそも異常値をチェックする場合にはC列に入力規則を設けるのが本筋かと思います。
 しかしむやみに「TRUE」を用いるのではなく、意味のある式を入力することにも一考の余地があります。