IIF関数 : Access(アクセス)

Access関数へ

IIF関数とは、指定した式を判定し、その通りなら「真(TRUE)」を返し、そうでなければ「偽(FALSE)」を返す条件判断をする関数です。

VBAで使用するIF関数と似た動作をします。 下にVBAで比較したコードを掲載していますので、参照してください。
スポンサーリンク



IIF関数の構文

IIF(条件判断する式 , 「真(TRUE)」の場合返る値 , 「偽(FALSE)」の場合返る値)


下の人口テーブルを使用します。
人口テーブル

IIF関数をフォームで使用したサンプル

フォームのレコードソースに人口テーブルを指定します。
レコードソースに人口テーブルを指定する

フォームにテキストボックスを追加します。
フォームにテキストボックスを追加する

テキストボックスのコントロールソースに下記のIIF関数を使った式を入力します。
=IIf([ID] Mod 2=1,[都道府県名],[人口])
これでIDが奇数の場合は、都道府県名を表示入力でき、偶数の場合は、人口を表示入力できるようになります。
コントロールソースにIIF関数を使った式を入力する

奇数の場合は、都道府県名が表示されています。
都道府県名が表示される

次のレコードに移動し、奇数の場合は、人口が表示されています。
奇数の場合は、人口が表示される

IIF関数をクエリで使用したサンプル

クエリを作成し、フィールドに下記のIIF関数を使った式を入力します。
区分: IIF(RIGHT([都道府県名],1)="県","県","")
これで都道府県名の最後の1文字が「県」なら「県」と表示され、そうでない場合は空白になります。
IIF関数をクエリで使用したサンプル

実行結果です。
都道府県名の最後の1文字が「県」の場合のみ「県」と表示されています。
都道府県名の最後の1文字が「県」の場合のみ「県」と表示

IIF関数はネスト(入れ子)して使用することができます。
ネストとは、関数内にさらに同じ関数を使用することです。
下記のネストした式を入力します。
区分: IIf(Right([都道府県名],1)="都","都",IIf(Right([都道府県名],1)="道","道",IIf(Right([都道府県名],1)="府","府",IIf(Right([都道府県名],1)="県","県",""))))

これで都道府県名の最後の1文字が表示されます。
都道府県名の最後の1文字が表示された

IIF関数とIF文を使ったVBAサンプルコード

IIF関数とIF文が、同じ結果を返すコードを作成しました。
内容は上のクエリで使用したものと同じですが、結果をテキストボックスに表示するようにしています。
IIF関数とIF文を使ったVBAサンプルコード

これを見るとIF文の方が見やすく、デバッグもし易そうです。
IIF関数とIF文の違いは、IIF関数は必ず「真(TRUE)」と「偽(FALSE)」の値を両方指定しないといけませんが、IF文はどちらかでもOKなことです。

Option Compare Database
Private Sub Form_Current()
    Dim s As String
        
    Me!テキスト0 = IIf(Right([都道府県名], 1) = "都", "都", _
        IIf(Right([都道府県名], 1) = "道", "道", _
        IIf(Right([都道府県名], 1) = "府", "府", _
        IIf(Right([都道府県名], 1) = "県", "県", ""))))
    
    If Right([都道府県名], 1) = "都" Then
        Me!テキスト2 = "都"
    ElseIf Right([都道府県名], 1) = "道" Then
        Me!テキスト2 = "道"
    ElseIf Right([都道府県名], 1) = "府" Then
        Me!テキスト2 = "府"
    ElseIf Right([都道府県名], 1) = "県" Then
        Me!テキスト2 = "県"
    Else
        Me!テキスト2 = ""
    End If
    
End Sub

VBAの実行結果です。
VBAの実行結果
スポンサーリンク


Copyright (c) Microsoft-Access.net All rights reserved.