11/27/2017

Access。ExcelのIF関数のように条件分岐の判断をしたい。【Iif&Switch】

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関数を使ってみるといいでしょう。