Switch関数を使いこなす【Access】

こんにちはmasalifeです。

 

Accessの力を最大限に発揮させるためには、関数の知識が必要不可欠です。

僕が多くのシステム構築をしてきた経験から

この関数は覚えといた方がいい

というものを順に紹介していきたいと思います。

 

今回紹介するのは

Switch関数

です。

 

○○なら××、△△なら☆☆、■■なら♦♦

といったような

複数の条件で判断する

ときに役立つ関数です。

 

条件判断する時はIIf関数を用いるのが一般的ですが

複数の条件で判断する場合は

IIf関数を入れ子(ネスト)しなければいけなく

関数が複雑で分かりにくくなってしまいます。

 

やりたい事をしっかりと把握して使い分けてくださいね。

Switch関数とは??

microsoft-officeサポートでは次のように示されています。

【構文】

Switch ( expr-1, value-1[, expr-2, value-2 )… [expr-n, value-n ])

引数

説明

expr

必須。 評価対象のバリアント型 (Variant) の式を指定します。

必須。 指定した式が真 (True) のときに返す値または式を指定します。

*microsoft-officeサポートより引用

expr-1の条件を満たす(真になる)ときに(value-1)が返ってきます。

複数の条件を指定できる事も確認出来ます。

 

実際にクエリでやってみましょう。

クエリでの活用

値によってグループ分けする

職員名と勤務年数が格納されている【T_経験年数】があります。

*経験年数フィールドのデータ型は数値型にしています。

 

経験年数によって、次のようにグループ分けしてみましょう。

20年目以上→A

10年目以上19年目以下→B

9年目以下→C

クエリをデザインビューで開きます。

赤枠部分を入力します。

 

ポイントは

式は左から右に計算される

ことです。

 

まず、[経験年数]>=20を満たすかどうかを判断し

満たさない場合に、[経験年数]>=10の計算に移ります。

 

式は左から右に計算されることによって

10年目以上19年目以下

の式を指定する時に、[経験年数]>=10 And [経験年数]<=19

とする必要がありません。

 

[経験年数]>=20を満たさないという事は

19以下であることが確定するからです。

 

[経験年数]>=10と指定するだけで正しい結果が返ってきます。

 

クエリを実行して結果を確認してみましょう。

20年目以上→A

10年目以上19年目以下→B

9年目以下→C

正しく表示されていますね。

 

どの条件も満たさない場合に値を指定する

職員名と経験年数が格納されている【T_経験年数】を確認してみると

「如月 隆」の経験年数が空白となっています。

内容を確認してみると、どうやら「如月 隆」は新入社員ということです。

 

経験年数が空白は新入社員と表示してグループ分けしましょう。

20年目以上→A

10年目以上19年目以下→B

9年目以下→C

空白→新入社員

クエリをデザインビューで開きます。

赤枠部分を入力します。

 

ポイントは赤字の部分です。

左から右に計算し

どの条件も満たさなかった場合に(True)、新入社員(“新入社員”)

と表示されるように式を指定しています。

 

左から右に計算されるので、一番最後に式を指定することを覚えておいてください。

 

クエリを実行して結果を確認してみましょう。

新入社員と表示されていますね。

さいごに

Switch関数便利ですよね。

 

今まで僕が作ったシステムはIIf関数を複数入れ子にしているんで

メンテナンスする人は本当に大変だと思います。(ごめんなさい…)

 

IIf関数・Switch関数どちらを使うかは好みだと思いますが

作成者以外の人がメンテンスをする事を考えると

Switch関数を使ったほうが分かりやすくて優しいかもしれないです。

 

参考になれば幸いです。