条件式を複数設定して、最初に合致した値を表示する
IFS関数は、条件式を複数設定出来ます。いずれの結果にも合致しない場合のみ、「どの条件にも合致しない結果」が表示されます。
条件式の基本構成
IFS(
条件1,"条件1に合致した場合の結果", ↓条件1に合致しない場合、条件2を評価する
条件2,"条件2に合致した場合の結果", ↓…
条件3,"条件3に合致した場合の結果", ↓全ての条件に合致しなかった場合、下記の結果が表示される
"どの条件に合致しない結果"
)
条件式や演算子の仕様はIF関数と同様になります。
【IF関数、AND関数、OR関数】条件によって表示される値を変化させる
IFS関数を使った計算式の例
「IFS関数」は、指定された条件を満たした場合に指定された値を返します。
計算結果として表示できる値は「計算結果の型」によって異なります。
# 複数条件で値を評価したい場合
IFS(
${点数} >= 80, '秀',
${点数} >= 70, '優',
${点数} >= 60, '良',
${点数} >= 50, '可',
'不可'
)
上記条件式によって、
- 秀:80以上
- 優:70以上 & 80未満
- 良:60以上 & 70未満
- 可:50以上 & 60未満
- 不可: 50未満
の条件分岐を設定することが出来ます。
この例では、計算結果の型を「文字列型」に設定しています。
# 在庫状況によって処理を分岐させたい場合
IFS(
${在庫数} >= 50, ${受注日} + 3,
${在庫数} >= 25, ${受注日} + 7,
${在庫数} >= 5, ${受注日} + 14,
${受注日} + 30
)
配送日を計算する際に、在庫数次第で受注日から何日掛かるのかを計算して、日付を出力します。
「受注管理アプリ」と「在庫管理アプリ」を分けた上で、${在庫数}はアプリ間連携で取得するようにしておくと、より実践的なアプリに近づけることが出来ます。
この例では、計算結果の型を「日付型」に設定しています。
AND関数を使った計算式の例
# 特殊な条件だけ別の表示をしたい場合
IFS(
AND(${打率} >= 30,${ホームラン数}>=30,${盗塁数}>=30), '年俸アップ(トリプルスリー報酬あり)',
${打率} >= 30, '年俸アップ',
${打率} >= 20, '現状維持',
'年棒ダウン'
)
上記条件式によって、
- 年俸アップ(トリプルスリー報酬あり):「打率3割・30本塁打・30盗塁」以上
- 年俸アップ:打率30%(3割)以上
- 現状維持: 「打率20%(2割)」以上「打率30%(3割)」未満
- 年俸ダウン:打率20%(2割)未満
の条件分岐を設定することが出来ます。
この例では、計算結果の型を「文字列型」に設定しています。
OR関数を使った計算式の例
# 特殊な条件のいずれかを満たす場合にVIP会員を表示したい場合
IFS(
OR(${区分} = '役員',${区分} = '株主',${サービス利用料} >= 10000), 'VIP会員',
'通常会員'
)
上記条件式によって、
- 「区分」のレコード項目が「役員」
- 「区分」のレコード項目が「株主」
- 「サービス利用料」のレコード項目が「10,000以上」
のいずれかを満たした場合「VIP会員」が結果として表示されます。
この例では、計算結果の型を「文字列型」に設定しています。
SWITCH関数とどちらを使うか迷った場合
「IFS関数」「SWITCH関数」ともに複数条件で処理を分岐させることが出来ます。
そのため、どちらの関数を使用するべきか判断に迷うことがあります。
判断基準として、
- SWITCH関数:「ラジオボタン」「プルダウン」などから固定値を評価する際に利用する
- IFS関数:「数値」「日付」など、値を範囲指定して評価したい際に利用する
というのが有効です。
IFS関数の方がより柔軟に条件分岐を設定することが出来ますが、固定値を評価する場合はSWITCH関数の方が少ない記述量でシンプルに記述することが出来ます。