Access。ExcelのIF関数のように条件分岐の判断をしたい。
<Iif関数&Switch関数>
Accessのクエリで、ExcelのIF関数のように、例えば、金額が10万以上なら○。そうでなければ、×というように判断分岐したい場合、
どのようにしたらいいのでしょうか?
まずは、次のクエリがあります。
この金額の合計フィールドを使って、金額が10万以上なら○。
そうでなければ、×という判断するフィールドを作っていくことにします。
ExcelではIF関数を使っていきますが、
Accessでは、Iif関数を使うことになります。
IFではなくて、Iifなので注意しましょう。なお形式は、
Iif(論理式,正の場合,偽の場合)
ということで、ExcelのIF関数と同じですね。
では、Q合計クエリから、Q合計○×判定クエリを作っていきます。
Iif関数フィールドは、
判定: IIf([金額の合計]>=100000,"○","×")
というように、設定してみましょう。
では、データシートビューで確認してみましょう。
このように、金額が10万以上なら○。そうでなければ、×。
というように判断されていますね。
ExcelのIF関数と同様に、金額が10万以上なら○。そうでなければ、空白。
というようにしたい場合には、
「"”(ダブルコーテーション×2)」で空白になりますから、
判定: IIf([金額の合計]>=100000,"○","")
とすれば、空白とすることができます。
基本的に、ExcelのIF関数が使えれば、
Accessでも概ね同じように使うことが出来ます。
ということで、
今度は、金額が15万以上なら”A”。
10万以上なら”B”。それ以外は”C”というようにしたい場合には、
ExcelのIF+IF関数のネストと同じように、
Accessでも、Iif+Iif関数で判断分岐することができます。
判定フィールドには、
判定: IIf([金額の合計]>=150000,"A",IIf([金額の合計]>=100000,"B","C"))
と設定してみましょう。
では、データシートビューで確認してみましょう。
このように、ABCで判断分岐することが出来ましたね。
では、最後に、Switch関数をご紹介しましょう。
ExcelもAccessも条件分岐する条件が増えていくと、
当然IF関数、またはIif関数が増えていき条件式自体が煩雑になっていく傾向にあります。
Excelでは、VLOOKUP関数を使うなど煩雑化傾向を抑制させていくのですが、
Accessの場合、Switch関数を使うことで煩雑化傾向を抑制することが出来ます。
金額が15万以上なら”A”。10万以上なら”B”。
それ以外は”C”という先ほどの条件をSwitch関数で表現してみましょう。
判定フィールドには、
判定: Switch([金額の合計]>=150000,"A",[金額の合計]>=100000,"B",True,"C")
と設定したら、データシートビューで確認してみましょう。
このように、Switch関数を使うと、
Iif関数をネスト構造にしなくてもよくなりますので、
判断分岐が増える場合には、Switch関数を使ってみるといいでしょう。