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 |
コメント