ACCESS IIf関数の使い方
ACCESSを使いこなしてくると、条件によって計算式や表示結果を変えたいという要望が出てきます。
こうした時に使える関数としてIIf関数があります。
EXCELではIf関数を使うのですが、ACCESSの場合はIIf関数になります。
主にクエリで使用することが多い、IIf関数の使い方をご説明します。
こんにちは。
はこにわガジェット (@hakoniwagadget) です。
ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは使いこなすために少しスキルが必要なものの、うまく活用すればExcelよりも業務の効率化が図れます。
この記事ではACCESSをもっと使いこなしたい方向けにACCESSの関数をご紹介していきます。
IIf関数の構文
最初にIIf関数の構文を提示します。
IIf ( 条件式 , 条件に合致した場合の式・値 , 条件に合致しない場合の式・値 )
基本的にExcelのIF関数と同じですので、構文は比較的理解しやすいでしょう。
例えば売上金額の大小を30,000円を区切りに判別する際には
IIf([売上]>30000,"大","小")
という使い方をします。
上記の場合は、売上フィールドの値が30,000を超えている場合は条件に合致しているので「大」が表示され、3,000以下の場合は条件に合致しないので「小」が表示されます。
クエリでのIIf関数利用例
サンプルデータ
IIf関数は主にクエリ、フォーム、レポートなどのACCESS独自のオブジェクトで使用します。
特にクエリでの利用シーンが多いでしょう。
逆にVBAではExcelと同じくIF関数になりますので、ここが混同しやすいかもしれません。
今回は、クエリでの利用のために以下のサンプルテーブルを準備しました。
商品テーブルです。
与件
この商品に以下の条件でキャンペーン価格を設定したいと思います。
・単価が15,000円以上のサービスはキャンペーンで3,000円引き
・単価が15,000円未満、10,000円以上のサービスは20%引き
・単価が10,000円未満のサービスはキャンペーン価格無し
クエリの作成
では、キャンペーン価格を設定するクエリを作成しましょう。
まずは商品テーブルを元にしたクエリをデザインビューで作成します。
ACCESSのメニューからクエリデザインで作成しましょう。
テーブルリストから「商品テーブル」を選択し、商品テーブルの中で使用するフィールドをクエリ下段のフィールドリストに配置します。
次に、キャンペーン価格を計算するためのフィールドを増やしていきます。
単価はテーブルに格納された値ですので、単価をそのまま書き換えるのではなく、クエリで一時的にキャンペーン価格という新しいフィールドを作成して金額を表示させます。
新しいフィールドの最上段を選択して、
最上部のメニューから「ビルダー」をクリックすると、式ビルダーが開きます。
ビルダーを使わずに、フィールドに直接記載することも可能ですが、式が長くなるとフィールドでは見にくいので、ビルダーを起動させると便利です。
最初は「単価が15,000円以上のサービスはキャンペーンで3,000円引き」の条件を下記のように設定してみましょう。
「キャンペーン価格」の後ろに「:」を付けているのは、この前までがフィールド名であることを表しています。
また、式に使用するフィールド名(この場合は単価)は[]で囲います。
キャンペーン価格: IIf([単価]>=15000,[単価]-3000,0)
ビルダーを閉じると、クエリではこのように表示されます。
では、クエリのデータシートビューで結果を見てみましょう。
意図した通り、キャンペーンというフィールドが追加され、価格が15,000円以上の商品は、キャンペーン価格が3,000円引きで設定されていること分かります。
では、その他の条件も記入して計算式を完成させましょう。
IIf関数を2つ重ねて、条件分岐をさせていきます。
最初の条件(15,000円以上)に合致しない場合に、再度IIf関数を入れて条件分岐させています。
2つ目のIIF関数で15,000円未満かつ、10,000円以上の場合には単価の0.8倍に、10,000円未満の倍には単価をそのまま表示します。
キャンペーン価格: IIf([単価]>=15000,[単価]-3000,IIf([単価]>=10000,[単価]*0.8,[単価]))
では、結果を見てみましょう。
きちんと条件通りにキャンペーン価格が設定されました。
フォームでのIIf関数利用例
では次にフォームでのIIf関数の利用例を見ていきましょう。
サンプルデータは先ほどと同じ、商品テーブルを使用します。
与件も同じで、商品をフォーム上で一覧表示し、キャンペーン価格を表示します。
まず、フォームウィザードで商品テーブルを元にフォームを作成しましょう。
もととなるテーブルに商品テーブルを選択し、すべてのフィールドを右側に移します。
レイアウトで表形式を選択します。
まずはフォームができました。
さらにここからデザインビューで修正をしていきます。
新規のテキストボックス「キャンペーン価格」を作成します。
この段階では非連結です。
プロパティシートでキャンペーン価格のコントロースソースに、IIf関数を使って以下の通り設定します。
=IIf([単価]>=15000,[単価]-3000,IIf([単価]>=10000,[単価]*0.8,[単価]))
IIf関数の内容はクエリの場合と同じですが、最初に「=」を付ける部分だけ注意ください。
では結果をフォームビューで見てみましょう。
上記の通り、キャンペーン価格が適切に表示されるようになりました。
このように、IIf関数を使っての計算はクエリで行ってもフォームで行っても同じ結果を得ることが可能です。
ただし、クエリでの計算とフォームでの計算が混在すると複雑になるため、どちらで計算するかは統一しておく方が良いでしょう。
IIf関数は非常によく利用する関数で便利ですが、条件式を重ねていくと構文が複雑になってきます。
慣れないうちはいきなり完成形の式を書くのではなく、今回のように1つずつ式を書いて正常に動作することを確認した上で、条件を複雑化していくことをお勧めします。
また、条件式を適用する順番も重要です。
複数のIIf関数を重ねる場合には、できるだけ全体を大きく分けられる条件式を先にもっていくことで、可読性の高い条件式を作成することが可能です。
以上、IIf関数の使い方をご紹介しました。
ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。
そんな時は、ACCESS開発歴20年以上、過去に100以上のACCESSデータベースを開発してきた私(@hakoniwagadget)にお任せください。
ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。
最後までお読みいただき、ありがとうございました。