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で、データベースを作成することが理想です。

このような場合は、どうしても、同じデータ入力をしなければなりません。

この同じデータを入力するのは、とても面倒ですね。ってか面倒なの。

コピペも、何回も行えば面倒になります。

Naosuke
データベースは、1度入力された値は、2度と入力しない。参照するが原則

 

なので、家族であれば、通常は、郵便番号、住所は同じはずです。

この点をDLOOKUP関数が自動で入力します。

しかし、問題があります。

家族でも、住所が異なる場合もあります。

だから、オートルックアップクエリでは、対応しきれないのです。

今回に限っては、オートルックアップクエリではなく、DLOOKUP関数が活躍します。

入力直後のデータを参照 作業手順 その1 データベース確認


このように、すでに入力済のデータがあります。

伊川直助の妻である、伊川直子が、同じく、がん保険に加入する場合を想定します。


このような入力フォームを作成しました。

通常、基本書等で、DLOOKUP関数はどのように説明されているか?


DLOOKUP関数は、上の図のような働きをしています。

通常は、他のテーブルや、クエリを参照しています。

入力直後のデータを参照 作業手順 その2 今回のDLOOKUP関数の役割

Naosuke

何度も言いますが、データベースの原則は、1度入力された値は、2度と入力しない。

参照するが原則


上記のようなコードになります。

入力直後のデータを参照 作業手順 その3 親と子供が、別の住所だったらどうする?

社員IDのように、A001が、伊川直助と決まっているのであれば、DLOOKUP関数ではなく、オートルックアップクエリを使うべきです。

しかし、家族が、必ずしも、同じ住所とは、限りません。

だから、今回は、オートルックアップクエリが使えないのです。

住所が異なる場合は、処理を中断しなければなりません。


これが完成のコードです。

なぜ個別IDと管理IDが必要なのか?

結論を言いますと、販売戦略のためです。

最近は、家族を巻き込んでの営業が、主流になっていると思います。

例えば、子供が、遠方に住んでいるのであれば、ポイントで、旅行ができるというような戦略が成り立ちます。

もちろん、実家に帰省する場合等、なるべく費用をかけないで、帰省したいと思うのが人情じゃないですか。

いったん、低価格で、帰省できたら、ポイントを貯めるために、カードを使うと思います。

私も、最近は、データベースを設計する際には、必ず、管理IDと、個別IDの作成有無について確認します。

また、管理IDが不要と言われたら、家族を巻き込めと提案します。

そうすると、家族での金の動き、個人の金の動きで、金の流れを分析できます。

そこで、統計の出番となります。

A家族と、B家族を比較して、同じような金の動きに対して、販売戦略を立て、広告の効果を測定することです。

そのベースとなるのが、まさにデータベースです。

ここがポイント

ここがポイント
Function8.png
正直言いますが、ACCESSを知らないときは、管理ID、個別ID等は、発想にありませんでした。それは、検索キーが増えれば増えるほど、参照が難しくなるからです。特に、私が、VLOOKUP関数信者の時は、なるべく、重複キーを作らないようにしました。それは、Excelが表計算ソフトであり、データベース管理ではないからです。また、データが大量になるとExcelでは無理なのです。しかし、統計となると、Excelはどのソフトよりも際立って活躍してくれます。

その前提条件となるのが、データベースです。

正確なデータベースを作成するには、入力をできるだけ省くことです。

省くことができれば、ヒューマンエラーがなくなります。

ACCESSにおいては、参照は、原則、オートルックアップクエリ、補助でDLOOKUP関数を、利用するようにしましょう。

動画とブログでわかりやすくExcelとACCESSを紹介しています

まとめ

データベースは、設計が大切です。

設計時に、どの機能が必要なのかも合わせて考えましょう。

後々、作成するのは本当に面倒です。

データベースは、設計さえできれば、7割は完成だと思っています。

今回も最後まで、読んでいただきありがとうございました。

今回のサンプルファイルは、No237です。

ネットや基本書で調べるはやめてください

わからない事を延々と考えるのは、無駄です。

  • なんで作動かないの?
  • もうやだ!VBAなんか嫌い!
  • ネットで調べても情報がない!

必ず作動するコードが、ここにあります。

スポンサーリンク

Twitterでフォローしよう

おすすめの記事