複数の条件と値の組み合わせに基づき、最初に真(True)と評価された条件に対応する値を返します。
使用例
右のようなテーブルをもとに成績判定を行うものとします。
判定基準は次のとおりです。
90点以上:A
75点以上90点未満:B
60点以上75点未満:C
60点未満:D
クエリデザインの画面です。ここで次のような列を設けます。
ランク: Switch([点数]>=90,"A",[点数]>=75 And [点数]<90,"B",[点数]>=60 And [点数]<75,"C",[点数]<60,"D")
データシートビューです。
ただし、この関数は「最初に真となった条件」に対応する値を返すものですので、上記の式の2つ目の条件のうち「 And [点数]<90」は記述する必要はありません(そもそも90点未満だから2つ目の条件に移って判定しているということです)。よって単に「[点数]>=75」としても問題ありません。同様に3つ目の条件も単に「[点数]>=60」として問題ありません。
また、条件に「True」と記せば具体的な条件を記すまでもなく必ず真となりますので、最後の条件にはこう記しておくのもテクニックです。ただし、仮に点数がNullでもTrueとなり「D」を返しますので注意が必要です。
データシートビューです。同じ結果が得られているのがわかります。
なお、即値による関数の実行結果の例をいくつか挙げてみます。
表記例 | 出力例 | 説明 |
---|---|---|
Switch(82>=90,"A",82>=75 And 82<90,"B",82>=60 And 82<75,"C",82<60,"D") | B | 2つ目の条件である「82>=75 And 82<90」が真となりますので、それに対応する「B」が返ります |
Switch(82>=90,"A",82>=75,"B",82>=60,"C",True,"D") | B | 条件としては「82>=75」と「82>=60」そして「True」の3つが真となりますが、このうち「82>=75」が最も先頭に近いので、それに対応する「B」が返ります |
Switch(10>=90,"A",10>=75,"B",10>=60,"C") | Null | 真となる条件が1つもない場合、Nullを返します |
書式
Switch(条件式1,値1[,…,条件式i,値i,…,条件式n,値n])
条件及び値は少なくとも1つずつ指定する必要があります。
備考
IIf関数をネスト(重ねて使う)すれば同じように使えますが、Switch関数の方が記述を簡素にすることができます。