ACCESS IIf関数で複数条件を指定する方法

IIf関数で複数条件を指定する方法

ACCESSではクエリなどで条件分岐をするために、IIf関数が用意されています。

このIIf関数、使いこなしてくると条件分岐を入れ子にしたくなります。
つまり、条件Aに対してYesの場合、さらに次の条件Bで判定を行う、という形です。

今回は、IIf関数で複数条件を指定する方法をご紹介します。


こんにちは。
はこにわガジェット (@hakoniwagadget) です。

ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは使いこなすために少しスキルが必要なものの、うまく活用すればExcelよりも業務の効率化が図れます。
この記事ではACCESSをもっと使いこなしたい方向けにACCESSの関数をご紹介していきます。

IIf関数の構文

IIf関数は、ACCESSのクエリで使用する条件分岐のための関数です。

まず、IIf関数の構文からご紹介します。

IIf ( 条件式 , 条件に合致した場合の式・値 , 条件に合致しない場合の式・値 )

基本的にExcelのIF関数と同じですので、構文は比較的理解しやすいでしょう。

例えば売上金額の大小を30,000円を区切りに判別する際には


 IIf([売上]>30000,"大","小")
 

という使い方をします。
上記の場合は、売上フィールドの値が30,000を超えている場合は条件に合致しているので「大」が表示され、3,000以下の場合は条件に合致しないので「小」が表示されます。

先にIIf関数の使い方から知りたいという方は下記の記事をご覧ください。

iif関数の使い方

IIf関数の入れ子構造

IIf関数は、最初の条件分岐の結果から、さらに条件分岐させることができます。

例えば、以下のtest_売上テーブルで、レコードの値に応じて以下のように判定をさせてみます。

・処理日が2021年1月1日以降で、かつ、伝票合計が30,000円以上の場合は「High」
・処理日が2021年1月1日以降で、かつ、伝票合計が30,000円未満の場合は「Low」
・処理日が2021年1月1日より前の場合は「None」

デザインビューでクエリを作成し、新しく判定フィールドを作成しました。

条件式をビルダーで表示すると以下になります。


 判定: IIf([処理日]>=#2021/01/01#,IIf([伝票合計]>=30000,"High","Low"),"None")
 

2つのIIf関数を入れ子構造にして、最初のIIf関数の条件である、2021年1月1日以降がTrueの場合に、2つめのIIf関数の条件が適用されていることが分かると思います。

IIf関数を入れ子で作成する際の工夫

このようにIIf関数を入れ子で利用する場合に注意するのはカッコです。
どうしても構造が複雑になるのでカッコの数や位置を間違えやすくなります。

こうしたミスを防ぐためには、いきなり入れ子で条件を書くのではなく、IIf関数の階層ごとにテストをしながら作っていくことが有効です。

例えば上記の例でいうと、最初に以下のように作成します。


 判定: IIf([処理日]>=#2021/01/01#,"Trueの処理","None")
 

まずは外側のIIf関数の処理を作り、Trueの場合は仮に”Trueの処理”と入れておきます。
この状態でも動作しますので、まずはここまでが正常に動作するかどうかを一度テストします。

この状態でうまく動作したら、次に”Trueの処理”としたところを正規の条件文に書き換えます。

こうすることで、もしエラーが発生した場合もどこまではうまくいっていてどこに原因があるのかを究明しやすくなります。

以上、IIf関数で複数条件を指定する方法をご紹介しました。


ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。

そんな時は、ACCESS開発歴20年以上、過去に100以上のACCESSデータベースを開発してきた私(@hakoniwagadget)にお任せください。

ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。

サービス一覧

最後までお読みいただき、ありがとうございました。