いきなり答える備忘録

Google Workspace・Microsoft 365・LibreOfficeなどに関するメモ

(Gスプレッドシート)IFS関数の使い方

 Googleスプレッドシートで3つ以上の条件分岐をするのに便利なIFS関数の使い方について紹介します。

  • IFS関数を使うと多岐にわたる条件分岐を判定・処理できます。IF関数を多数並べるより簡単です。
  • 条件を並べる順番や表記方法に注意が必要です。

機能と構文

 IFS関数の機能は「条件と値の組を順次チェックし、最初に真(TRUE)と判定された条件に対応する値を返す」というものです。
 構文は次のとおりです([ ]内は省略可)。

IFS(条件1, 値1[, 条件2, 値2, …])

 条件1が真ならば値1を返し、条件2が真ならば値2を返し……というように機能します。IF関数とは異なり条件(と値の組)を多数設定できるのがメリットです。
 条件の内容によっては2つ以上の条件が真となることがあり得ますが、最初に真となる条件に対応する値だけが返ります。これを利用して条件の記し方を簡略化できますが、注意を要する点でもあります。
 なお、いずれの条件も真でない場合はエラーが返ります。

基本的な使用例

 次の画像ではD列にIFS関数を使った式を入力し、C列の点数に基づくランク付けを行っています。

 D3セル(下方にコピー)

=IFS(C3>=90,"A",C3>=80,"B",C3>=70,"C",C3>=0,"D")

 この式では4つの条件と値の組が設定されており、次の4つの判定が順番に行われます。

  1. C3の値が90以上なら「A」を返す
  2. C3の値が80以上なら「B」を返す
  3. C3の値が70以上なら「C」を返す
  4. C3の値が0以上なら「D」を返す
 C3セルの値(84)は90未満なので1番目の条件は満たされません。よって2番目の条件に移りますが、そこで「80以上」という条件を満たすため、2番目の条件に対応する値つまり「B」が返ります。



 同じことはIF関数を使ってもできますが、IF関数では2択の分岐しかできないので複数のIF関数をネスト(入れ子)する必要があります。
 次の画像はその例です。

 D3セル(下方にコピー)

=IF(C3>=90,"A",IF(C3>=80,"B",IF(C3>=70,"C","D")))

 IF関数を3重に重ねています。これにより最も外側のIF関数でC3の値が90以上かどうか判定し真だったら「A」を表示、そうでない場合は1つ内側のIF関数で80以上かどうか判定し真だったら「B」を表示……という判定を繰り返しています。
 Excelに慣れていればこれぐらいは苦にならないかもしれませんが、やはり入力が面倒で間違えやすいです。上記のIFS関数の方がフラットで扱いやすいことが一目瞭然です。
(注:上記のIFSの式では点数が0未満のときにエラーとなりますが、こちらの式では「D」が返るため、正確には少し内容が異なります)

注意点

条件を記す順序に気を付ける必要がある

 次の画像では上記の例と同様に点数に応じたランク付けを行おうとしていますが、条件と値の組を逆の順番で記しています。
 これによりすべての点数が「D」と判定されるという、意図しない結果となっています。

 D3セル(意図しない結果になる)

=IFS(C3>=0,"D",C3>=70,"C",C3>=80,"B",C3>=90,"A")

 いずれの点数も最初の条件(0以上かどうか)でいきなり真と判定されてしまうことが問題の原因です。
 そこでIFS関数の「最初に真となった条件に対応する値を返す」という性質を考慮して条件の並べ方を決める必要があります。
 具体的には「より狭い条件から順に並べていく」のが原則で、最初の例の条件の並べ方はこれに沿っているのが分かります。



 もちろん各条件を厳密に、つまり1つの値が1つの条件でのみ真となるよう詳細に記せば、どのような順番で記しても正しい結果になります。しかし式は複雑なものとなり、IF関数をネストしている方がマシということにもなりかねません。

 D3セル(正しいが面倒な式)

=IFS(AND(C3>=0,C3<70),"D",AND(C3>=70,C3<80),"C",AND(C3>=80,C3<90),"B",C3>=90,"A")

 繰り返しになりますが「最初に真となった条件に対応する値を返す」という関数の性質に基づき条件を整理することで、最初の例のような平易な記し方ができるというわけです。

SUMIF関数のような条件の記し方はできない

 上記の各例のように同じセルをいちいち参照するのはなかなか面倒ですし、ついつい次の画像のように記したくなりますが結果はエラーになります。

 D3セル(エラー)

=IFS(C3,">=90","A",">=80","B",">=70","C",">=0","D")

 SWITCH関数やSUMIF関数と混同したような記し方ですが、そもそも構文に沿った引数になっていませんしIFS関数では「">=90"」のような条件指定もできません。セル参照を欠かさず記す必要があります。



 一方で次の画像のように、条件ごとに別のセルを参照することは容易ですので、一長一短と割り切って使うしかありません。

「それ以外」の場合を指定する方法

 複数の条件を設定していると、「それ以外」の場合、つまり「それまでのいずれの条件にも該当しないという条件」を設定したくなる場合があります。
 これについては次の記事で考え方と実例を紹介しています。

www.officeisyours.com