ACCESSを勉強して、1番初めに出会う関数は、DLOOKUP関数だと思います。
VLOOKUP関数に似ているし、なんとなく、親しみがありますよね。
私は、VLOOKUP関数が個人的には大嫌いですが、
ACCESSのDLOOKUP関数は結構好きなんです。
目次
DLOOKUP関数の本当に便利な使い方
こんにちは。伊川(@naonaoke)です。
DLOOKUP関数は、オートルックアップクエリを覚えるまでは、結構使う関数です。
しかし、オートルックアップクエリを覚えた瞬間に、利用しなくなるのが、DLOOKUP関数です。
ふんふん、オートルックアップクエリが最強だもんねーと思いきや、
どうしても、DLOOKUP関数を使わなければならないシーンがあります。
どう考えても、DLOOKUP関数しか対応できないのです。
私は、オートルックアップクエリが大好きなのですが、3回ほど、DLOOKUP関数に、浮気をしました。
ごめんね。オートルックアップクエリという感じです。
このブログはこんな人にお勧め
- ACCESSを使い始めた人
- ACCESSでDLOOKUP関数を使ったことがある人
- オートルックアップクエリでは、対処できない問題があることを知っている人
このブログを、読み終わるころには・・・・
DLOOKUP関数は、VLOOKUP関数と異なって必要だということを理解できます。しかし、DLOOKUP関数は、オートルックアップクエリの補助的な関数です。
オートルックアップクエリを理解した上で、DLOOKUP関数を利用しましょう。
DLOOKUP関数を利用しなければならない場面
以前に、カンタンなテレアポシステム作成の場面で、下記の記事を紹介しました。
今回もオートルックアップクエリでは、対応することができません。
だからDLOOKUP関数を利用します。
このようは、場合を想定します。
今の会社は、たぶんこのようにデータベースを作成しているはずです。
親ID、管理ID(以下管理IDで統一)で、家族丸ごと掌握して、子ID、個別ID(以下個別IDで統一)で、個人を管理すると思います。
このほうが、販売戦略を立てやすいと思います。
このように考えると、競馬も、レースID、個別の馬を管理するIDで、データベースを作成することが理想です。
このような場合は、どうしても、同じデータ入力をしなければなりません。
この同じデータを入力するのは、とても面倒ですね。ってか面倒なの。
コピペも、何回も行えば面倒になります。
なので、家族であれば、通常は、郵便番号、住所は同じはずです。
この点をDLOOKUP関数が自動で入力します。
しかし、問題があります。
家族でも、住所が異なる場合もあります。
だから、オートルックアップクエリでは、対応しきれないのです。
今回に限っては、オートルックアップクエリではなく、DLOOKUP関数が活躍します。
入力直後のデータを参照 作業手順 その1 データベース確認
このように、すでに入力済のデータがあります。
伊川直助の妻である、伊川直子が、同じく、がん保険に加入する場合を想定します。
このような入力フォームを作成しました。
通常、基本書等で、DLOOKUP関数はどのように説明されているか?
DLOOKUP関数は、上の図のような働きをしています。
通常は、他のテーブルや、クエリを参照しています。
入力直後のデータを参照 作業手順 その2 今回のDLOOKUP関数の役割
何度も言いますが、データベースの原則は、1度入力された値は、2度と入力しない。
参照するが原則
上記のようなコードになります。
入力直後のデータを参照 作業手順 その3 親と子供が、別の住所だったらどうする?
社員IDのように、A001が、伊川直助と決まっているのであれば、DLOOKUP関数ではなく、オートルックアップクエリを使うべきです。
しかし、家族が、必ずしも、同じ住所とは、限りません。
だから、今回は、オートルックアップクエリが使えないのです。
住所が異なる場合は、処理を中断しなければなりません。
これが完成のコードです。
なぜ個別IDと管理IDが必要なのか?
結論を言いますと、販売戦略のためです。
最近は、家族を巻き込んでの営業が、主流になっていると思います。
例えば、子供が、遠方に住んでいるのであれば、ポイントで、旅行ができるというような戦略が成り立ちます。
もちろん、実家に帰省する場合等、なるべく費用をかけないで、帰省したいと思うのが人情じゃないですか。
いったん、低価格で、帰省できたら、ポイントを貯めるために、カードを使うと思います。
私も、最近は、データベースを設計する際には、必ず、管理IDと、個別IDの作成有無について確認します。
また、管理IDが不要と言われたら、家族を巻き込めと提案します。
そうすると、家族での金の動き、個人の金の動きで、金の流れを分析できます。
そこで、統計の出番となります。
A家族と、B家族を比較して、同じような金の動きに対して、販売戦略を立て、広告の効果を測定することです。
そのベースとなるのが、まさにデータベースです。
ここがポイント
正直言いますが、ACCESSを知らないときは、管理ID、個別ID等は、発想にありませんでした。それは、検索キーが増えれば増えるほど、参照が難しくなるからです。特に、私が、VLOOKUP関数信者の時は、なるべく、重複キーを作らないようにしました。それは、Excelが表計算ソフトであり、データベース管理ではないからです。また、データが大量になるとExcelでは無理なのです。しかし、統計となると、Excelはどのソフトよりも際立って活躍してくれます。
その前提条件となるのが、データベースです。
正確なデータベースを作成するには、入力をできるだけ省くことです。
省くことができれば、ヒューマンエラーがなくなります。
ACCESSにおいては、参照は、原則、オートルックアップクエリ、補助でDLOOKUP関数を、利用するようにしましょう。
まとめ
データベースは、設計が大切です。
設計時に、どの機能が必要なのかも合わせて考えましょう。
後々、作成するのは本当に面倒です。
データベースは、設計さえできれば、7割は完成だと思っています。
今回も最後まで、読んでいただきありがとうございました。
今回のサンプルファイルは、No237です。
わからない事を延々と考えるのは、無駄です。
- なんで作動かないの?
- もうやだ!VBAなんか嫌い!
- ネットで調べても情報がない!
必ず作動するコードが、ここにあります。