スプレッドシートで指定した複数の条件に応じて表示結果を変えたい時に使うIFS関数について詳しく解説します。
ifs関数は複数の条件に応じて表示結果を切り分ける関数です。
スプレッドシートには、指定した条件に応じて表示される内容を切り替えるif関数があり、入れ子にすることで複数条件にも対応できるのですが、入れ子にすることで構文が複雑になりミスも起きやすいです。
if関数が条件を真偽で判別していたのに対し、ifs関数では『条件』と『適合した場合に表示する値』をセットにして、繰り返すことで複数条件に対して表示結果を切り分けることができます。ifs関数の構文は下記のようになります。
=IFS(条件1, 値1, [条件2, 値2, …])
IFS関数を利用して表示を段階的に切り分けてみましょう。スコアに応じてSからDまでランクを判別するようにしてみましょう。
スコアが90以上ならS、80以上ならA、70以上ならBといった具合に『条件』と『表示される値』をセットで設定します。下段のセルは条件で指定するセルを変更します。
=ifs(C3>90,"S",C3>80,"A",C3>70,"B",C3>60,"C",C3>50,"D")
行数がそれほど多くない場合はオートフィルで展開すればいいですが、何百行、何千行に渡る場合は効率や負荷を考えるとARRAYFORMULA関数を利用したほうがいいでしょう。
上記の例では全ての条件に対して、表示結果が指定されていましたが、このままでは条件に当てはまらないスコアが50点未満の人のランクには『#N/A』と表示されてしまいます。
では、条件に当てはまらなかったそれ以外のものに全て『ランク外』と表示されるようにしてみましょう。最後に『,TRUE,”ランク外”』を付け足します。ここでポイントなのはそれ以外の指定方法が偽の場合を示す『FALSE』ではなく、『TRUE』になる点です。ifs関数の場合は真偽の2択で判別するのではなく、『条件』と『結果』を対で設定していくため、そこまでの処理が判別が終わった上で、それ以外の全ては『真』として処理するのだと思いますが、理屈がどうであれ、約束事として覚えてしまいましょう。
=ifs(C10>90,"S",C10>80,"A",C10>70,"B",C10>60,"C",C10>50,"D")
=ifs(C10>90,"S",C10>80,"A",C10>70,"B",C10>60,"C",C10>50,"D",TRUE,"ランク外")
条件に当てはまらないものには『ランク外』と表示されるようになりました。
スコアが空欄の時にランク外と表示されるのは好ましくないため、空白の場合は未評価と表示されるようにしましょう。空白を判別するには対象セルが空白であることを示す必要があります。『C10=""』と条件に加えましょう。
=ifs(C10>90,"S”",C10>80,"A",C10>70,"B",C10>60,"C",C10>50,"D",C10=””,”未評価”,TRUE,"ランク外")
こうすれば50まではランクが表示、50未満は『ランク外』空白は『未評価』と表示されるようになります。当然ながらこちらも行数が多ければARRAYFORMULA関数を使用するべきです。
=ArrayFormula(ifs(C3:C10>90,"S",C3:C10>80,"A",C3:C10>70,"B",C3:C10>60,"C",C3:C10>50,"D",C3:C10=””"","未評価",TRUE,"ランク外"))
条件に応じて表示結果を変えるIFS関数について解説してきました。よく使う関数の一つなので必ずマスターしておきたい関数の一つですね。条件付き書式を組み合わせ、結果によって背景色を変えたり、文字を太字にするなどの強調表示することでより目立つようにしてもいいかもしれませんね。
こちらの記事でスプレッドシートの関数の基本的なものを紹介しています。
スプレッドシートの使い方については下記の記事でまとめていますので併せてお読みください。