IIf関数

 指定した条件式が真(正しい)である場合はそれに対応する値を、偽(正しくない)である場合はそれに対応する(別の)値を返します。

使用例

 例として右のようなテーブルを用います。
 点数の合計が60点以上であれば合格、そうでなければ不合格という値を表示させることとします。


 テーブルに基づくクエリを作成し、次のような列を設けます。

合否判定: IIf([点数]>=60,"合格","不合格")


 データシートビューです。
 さて、点数がNullの者については不合格となっていることに注意してください。「60点以上」という合格の条件にあてはまっていないのは事実ですし、いずれ点数が入力されるのであれば余り深く考えなくていいように思われるかもしれませんが、点数の入力が完了しないまま合格発表してしまうといったミスの元にもなり得ます。
 そこで、対応の一例として合否判定列を次のようにすることが考えられます。

合否判定: IIf([点数] Is Null,"",IIf([点数]>=60,"合格","不合格"))

 この式は、IIf関数を2重に使用することにより点数がNullの場合は空文字列を、60点以上の場合は「合格」を、60点未満の場合は「不合格」を返します。

 なお、即値による関数の実行結果の例をいくつか挙げてみます。

表記例出力例説明
IIf(88>=60,"合格","不合格")合格「88>=60」は真ですので「合格」が返されます
IIf(46>=60,"合格","不合格")不合格「46>=60」は偽ですので「不合格」が返されます
IIf(Null>=60,"合格","不合格")不合格「Null>=60」は偽とみなされ「不合格」が返されます
IIf(Null<60,"不合格","合格")合格一見上記の「IIf(Null>=60,"合格","不合格")」と同じ結果を返しそうに見えますが、「Null<60」はやはり偽とみなされるため「合格」が返されます
IIf(100+Null>=60,"合格","不合格")不合格Nullを含む四則演算などの計算結果はNullとなりますので、結果的に「不合格」が返されます。複数の列の値を足した結果がNullになるというのはよく見られますので注意が必要です

書式

IIf(条件式,真の場合の値,偽の場合の値)

備考

 もっとも多用される関数の1つです。
 条件が複雑になる場合はネストして使いますが、式が長くなりやすいのでSwitch関数やChoose関数の利用も検討する必要があります。
 また、この関数に限ったことではありませんが、Nullの存在が思わぬ結果を招くことがありますので扱いにはくれぐれも気をつける必要があります。