前回は、DLOOKUP関数が、オートルックアップクエリを凌駕する記事を書きました。

DLOOKUP関数で検索されているキーワードは複数検索です。

結構、HITします。

では、クエリと、DLOOKUP関数はどちらが、使いやすいでしょうか?

クエリ VS DLOOKUP関数の複数条件 最強はどっち?

こんにちは。伊川(@naonaoke)です。

今回は、オートルックアップを省いた、クエリ VS DLOOKUP関数の紹介です。

ここもACCESSを理解するには、とても重要です。

ACCESS脳へ切り替える、重要なターニングポイントになります。

DLOOKUP関数は、VLOOKUP関数と兄弟のようなものです。

最近は、Excelにも、パワークエリ、パワーピボットなる技があります。

ACCESSと似たようなものですが、純粋にクエリで比べてみましょう。

このブログはこんな人にお勧め

今回のテーマ
  • DLOOKUP関数を利用して複数条件で検索している人
  • DLOOKUP関数が好きな人
  • ACCESSをExcelのように利用している人

このブログを、読み終わるころには・・・・

クエリについて、理解が早まります。このクエリを使うには、基本は主キーなのです。

主キーの理解が早まれば、今後、DLOOKUP関数は利用しなくなると思います。

実際に、私は、DLOOKUP関数は利用しなくなりました。

DLOOKUP関数を利用して複数条件で検索

大前提としてですが、複数検索というのは、Excelでも、ACCESSでも基本あり得ません。

状況によっては、複数検索する場合もあります。

しかし、効率が悪すぎます。

このように、DLOOKUP関数を利用して、複数検索をするシーンはカンタンに想像できます。

そのテーブルには、必ずと言っていいほど、主キーがありません。

主キーが存在しない、かつ、外部キーすら設定されていないテーブルは、データベースとは呼びたくありません。

Naosuke

最初は、主キーを理解するのは難しいよね

下記の記事に詳しく記載しているから、ACCESSを勉強する人は、必ず読んでほしい。

では、私が遭遇した、DLOOKUP関数の複数条件検索について、タネ明かしをします。

きっと、なーんだそんなことかと思います。

 

DLOOKUP関数 VS クエリ 作業手順 その1 データベース確認


このようなテーブルが、あるとします。

見た感じ、主キーはありませんね。


そして、金額が設定されていないテーブルに、MT_商品の金額を参照したいとします。

ココが出発点です。

あなたなら、DLOOKUP関数を使いますか?

それとも、クエリを使いますか?

DLOOKUP関数 VS クエリ 作業手順 その2 DLOOKUP関数を使う

DLOOKUP関数は、VLOOKUP関数の感覚で利用できるので、親しみやすいです。

ところが、ACCESSのDLOOKUP関数は、とてもシビアです。

少しのミスも許してくれません。

Naosuke

ここでハマると、普通に5時間コースです。

ハマる原因は、クォーテーションです。


このように、参照することはできます。



文字列の場合には。シングルクォーテーションが必要となり、数値型には、シングルクォーテーションが、不要になります。

ここを間違えると、型が一致しませんというエラーが表示されます。

はっきり言って、このエラーは知っているか、知らないかなので、考えても無駄です。

DLOOKUP関数 VS クエリ 作業手順 その3 DLOOKUP関数の複数検索は、結局何をしているのか?


赤枠の中は、一意のキーになっています。

つまり、主キーなんですね。

Naosuke
一意のキーになっているから、複数条件で検索できるんです。

 

DLOOKUP関数 VS クエリ 作業手順 その4 クエリで実装


IDとID、コードとコード 線をつなぐだけなのよ。

これを難しいと言いますか?

これが、ACCESSの標準機能です。

DLOOKUP関数は、条件で、テーブルの中を探します。

探すんです。

だから、クエリより、時間が、かかります。

DLOOKUP関数は、ACCESSのオプション機能なので、設定も面倒なのです。

Naosuke
あなた、それもDLOOKUP関数を利用して、複数条件で検索しますか?

 

DLOOKUP関数 VS クエリ 作業手順 その5 えっ?上司に疑われる?


結果は、同じになります。

カンタンに判定したければ、EXACT関数を使いましょう。

Naosuke
以前は、疑う上司は、IF関数で、やっつけろでしたが、EXACT関数のほうが便利です。

EXACT関数は、セルの値が同じなら、TRUE 値が異なれば、FALSEを返します。

全て、TRUEなので、DLOOKUP関数を利用した複数検索と、クエリに関しては、同じ結果となりました。

ここがポイント

ここがポイント
Function8.png
DLOOKUP関数を利用した複数検索は、Execlの考え方を利用したものです。以前に、VLOOKUP神話崩壊という動画とブログをアップしました。その時は、配列と、IndexとMatch関数を利用しました。関数を使って複雑な数式は、ACCESSでは、あまり使いません。使いたくても、利用するようなシーンがないからです。主キーリレーションとクエリがあれば、抽出できないデータはないと思っています。

そして、少し複雑なサブクエリを覚えると、古今東西、前後左右、縦横無尽に抽出できます。

これが、データベースなんです。

はっきり言いますが、データベースでは、派手なVBAなどはいらんのです。

抽出と入力は、あくまでも別の仕事だからです。

そして、ACCESSにおいて、求められる重要なスキルは、SQL文の操作なのです。

しかし、意固地ならないでくださいね。

DLOOKUP関数を利用したほうが、楽な時もあるんですから。

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

まとめ

NETで、ネタを探していると、DLOOKUP関数を利用した複数条件が、すごくHITします。

知っているか、知らないかで、こんなにも違うのです。

ACCESSを覚えたいあなたへ。

ACCESSは、リレーションと主キーなのです。

ここを理解できれば、ACCESSと仲良くなれます。

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

 

 

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

サンプルファイルを購入希望の方はココをクリック
ネットや基本書で調べるはやめてください

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

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

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

スポンサーリンク

Twitterでフォローしよう

おすすめの記事