Accessで条件に応じた処理をする方法 IIf文の活用

クエリ

Accessでデータ処理をする際に、条件に応じたアウトプットを出したいといった機会が頻繁に出てきます。

このようなデータ処理で有用な関数として、IIf文がありますので、サンプルデータを交えながら紹介していきます。

スポンサーリンク

IIf文について

冒頭でも紹介したように、IIf文は条件に応じたアウトプットを出す関数で、以下の形式で表現されます。

IIf([判定条件], [判定条件が正しい場合に出力する値], [判定条件が正しくない場合に出力する値])

ここで判定条件は、テーブルの値が目的の値に合致するか、Date関数により得られた日付が目的の日付と合致するか、フォーム上のテキストボックス等に入力された値が目的の値に合致するか、等々、様々なデータを用いて設定することができます。つまり、クエリの演算設定に用いることもできますし、フォーム上の表示内容に設定することもでき、非常に汎用性の高い関数です。

次からは、実際のサンプルデータを見ながらIIf文の使用方法を紹介していきます。

サンプルデータについて

サンプルデータを収納するテーブルの名称を「T_IIf」とし、以下のフィールドを作成します。

表1 T_IIfテーブルのフィールド名及びデータ型

フィールド名データ型
氏名短いテキスト
所属変更日日付/時刻型
旧所属短いテキスト
新所属短いテキスト

続いて、表2に示すサンプルデータを登録します。

表2 サンプルデータ

氏名所属変更日旧所属新所属
佐藤 公平1999/10/01A班第1班
渡辺 義男2010/04/01C班第1班
山田 太郎2002/06/15C班第2班
本山 花子1999/10/01A班第2班
斉藤 茂1995/04/01B班第1班
坂本 渉2001/08/01B班第2班

それでは、次からIIf文を用いたデータ処理の例を見ていきましょう。

クエリで条件に応じた値を出力する方法

例として、20年前の所属情報を知りたい場合を考えてみましょう。

所属変更日フィールドの値を用いて条件に一致した場合は旧所属フィールドの値を、そうでなければ新所属フィールドの値を出力するようにします。まずは、クエリデザインから「T_IIf」テーブルを追加します。

判定条件は、「所属変更日が今日(本記事の執筆日: 2020/12/24)から20年より前(2000/12/14より前)」とし、条件に一致する場合は旧所属フィールドの値を出力し、そうでなければ新所属フィールドの値を出力するとします。

この場合、クエリの【フィールド】に以下の式を入力します。

所属: IIf([所属変更日]<DateAdd(“yyyy”,-20,Date()),[旧所属],[新所属])

ここで、DateAdd関数の使い方については以下の記事をご参照ください。

さて、このクエリの設定内容を図1に、実行結果を図2に示します。

図1 クエリ中のIIf文を設定

図2 クエリでのIIf文出力結果

このように、条件に応じて出力する内容を弁別したい時などに、IIf文は活用することができます。

続いて、フォーム上でIIf文を使う例を見てみましょう。

スポンサーリンク

フォーム上で条件に応じた値を出力する方法

例として、新所属フィールドの値が「第1班」であれば「東京」を、そうでなければ「大阪」が表示されるテキストボックスをフォーム上に配置してみましょう。

先に作成した「T_IIf」テーブルをレコードソースとしたサンプルフォーム「F_所属」を作成します。そして、各フィールドをコントロールソースにしたテキストボックスを配置します。(図3~図4参照。)

図3 「F_所属」フォームの作成

図4 テキストボックスの追加①

図5 テキストボックスの追加②

ここで、フォームのより具体的な作成方法は以下の記事をご参照ください。

さらに、新所属フィールドの値に応じた結果を示すためのテキストボックス「t_出張先」を追加します(図6)。

図6 「t_出張先」テキストボックスの追加

追加した「t_出張先」テキストボックスのコントロールソースに以下の式を入力します(図7)。

=IIf([新所属]=“第1班”,“東京”,“大阪”)

図7 コントロールソースへIIf文を追加

これで一通りの準備ができましたので、実際に出力される様子を見ていきましょう。

「F_所属」をフォームビューで開くと図8で示すように新所属フィールドの値に応じて、「t_出張先」テキストボックスの値が変わることが分かります。

図8 フォーム上でのIIf文出力結果

このようにして、フォーム上でもIIf文を用いて条件に応じた出力をさせることができました。

複数の判定条件を設定する場合

これまで紹介してきた内容は、条件が一つの場合に限って紹介してきました。ここで、仮に複数条件で処理をしたい場合はどうすれば良いでしょうか。

実は、この問題は簡単に解決できます。それは、IIf文をネストしてあげれば良いのです。

クエリのIIf文で紹介した式を改めて掲載しますと、

所属: IIf([所属変更日]<DateAdd(“yyyy”,-20,Date()),[旧所属],[新所属])

と書いたわけですが、仮に所属変更日に何も値が入っていない場合、出力内容を新所属フィールドにするとしたら、次のように式を書き直すことになります。

所属: IIf(IsNull([所属変更日]),[新所属],IIf([所属変更日]<DateAdd(“yyyy”,-20,Date()),[旧所属],[新所属]))

この式が示している内容は、一つ目のIIf文より、所属変更日の値がない場合、つまりNullの場合は新所属フィールドの値を返し、さもなければ、二つ目のIIf文より、所属変更日が20年前のレコードに対しては旧所属を、さもなければ、新所属を出力することになります。

このようにして、条件処理を分岐させることができますので様々な場面で活用できると思います。

まとめ

今回は、条件分岐により出力内容を切り替える方法としてIIf文について紹介してきました。

IIf文は様々な場面で活用でき、また複数条件でも処理をすることができますので大変便利な関数です。Accessを用いて業務効率を改善する際には非常に役立ちますので、是非使用方法を覚えていただければと思います。

IIf文については、以下の書籍でも詳しく紹介されています。この機会に是非購入されてみてはいかがでしょうか。私自身、非常に勉強になった書籍で、現在も辞書代わりに使用しています。

スポンサーリンク

コメント

タイトルとURLをコピーしました