Accessには、ExcelのVLOOKUP関数と同様の処理ができる関数が用意されていません。
この項ではVLOOKUP関数のような近似値を含めた検索処理をフォーム内で実行する方法をご紹介いたします。
DMax関数とDLookup関数を組み合わせて処理します。
表の確認
下記のような表(T_スコア記録表)において、「スコア」から「ランク」を割り出します。
スコアID | 採点日 | 受験者番号 | スコア |
1 | 2014/5/7 | 15 | 495 |
2 | 2014/5/7 | 95 | 605 |
3 | 2014/5/7 | 54 | 350 |
4 | 2014/5/7 | 70 | 419 |
5 | 2014/5/7 | 22 | 377 |
6 | 2014/5/7 | 89 | 649 |
7 | 2014/5/7 | 26 | 550 |
8 | 2014/5/7 | 71 | 654 |
9 | 2014/5/7 | 21 | 775 |
10 | 2014/5/7 | 5 | 848 |
11 | 2014/5/11 | 90 | 437 |
12 | 2014/5/14 | 66 | 622 |
「スコア→ランク」の対応表には以下(Q_ランク対応表)を用います。
「最小スコア」から「ランク」を割り出します。
「スコア」が「495」ならば「最小スコア」が「450~550」の間に存在するので、上側である「450」の行に該当すると考えられます。その行の「ランク」は「A」です。
最小スコア | 最大スコア | ランク |
-99999 | 249 | D |
250 | 349 | C |
350 | 449 | B |
450 | 549 | A |
550 | 649 | A+ |
650 | 749 | S |
750 | 99999 | S+ |
以下のような結果を取得することが目的となります。
スコアID | 採点日 | 受験者番号 | スコア | ランク |
1 | 2014/5/7 | 15 | 495 | A |
2 | 2014/5/7 | 95 | 605 | A+ |
3 | 2014/5/7 | 54 | 350 | B |
4 | 2014/5/7 | 70 | 419 | B |
5 | 2014/5/7 | 22 | 377 | B |
6 | 2014/5/7 | 89 | 649 | A+ |
7 | 2014/5/7 | 26 | 550 | A+ |
8 | 2014/5/7 | 71 | 654 | S |
9 | 2014/5/7 | 21 | 775 | S+ |
10 | 2014/5/7 | 5 | 848 | S+ |
11 | 2014/5/11 | 90 | 437 | B |
12 | 2014/5/14 | 66 | 622 | A+ |
13 | 2014/5/18 | 3 | 566 | A+ |
14 | 2014/5/20 | 98 | 450 | A |
コメント