VBAを勉強していて、特にExcelで、1番最後のセルという考え方を理解したときに、少しの感動があります。

今回は、ACCESSで、1番新しいレコード、2番目に新しいレコードと、特に日付を特定しない抽出方法です。

ここでな、DLOOKUP関数が以外な働きをします。

2番目に新しいレコードの抽出はどうやるの?

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

最新のレコードの抽出は、集計クエリでもできます。

また、MAX関数でも抽出可能です。

しかし、人間の欲望は果てしなく、2番目に新しいレコードは、抽出できるのだろうか?

このような疑問を持つようになると、VBAマニアックスです。

このような疑問は、実務でもあるあるです。

今回は、関数を組み合わせる抽出方法です。

Naosuke
これは、関数組合せの基本だね

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

今回のテーマ
  • ACCESSでクエリを勉強している人
  • データ抽出に関して、日付のみで抽出している人
  • DLOOKUP関数の意外な使い方を知りたい人

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

ExcelのVLOOPUP関数と違って、DLOOKUP関数は、色々な用途があります。先頭にDが付く関数は、データベース専用に作成された関数かもしれません。

DSUM関数もデータベース専用関数だと私は思っています。

クエリを作成するには、柔軟な思考回路が必要だと実感できます。

2番目に新しいレコード

結論から言うと、MAX関数と、DLOOKUP関数を利用します。

意外な組み合わせかもしれませんが、この2人が手を組みます。


スポンサーリンク
Naosuke
DLOOKUP関数に関しては、下記の記事を参考にしてください。

 

 

そうすると、3番目だろうが、4番目だろうが、自由自在になります。

この方法を思いついたキッカケは、競馬です。


スポンサーリンク
Naosuke
またかよと思わないでください。

 

競馬は、土日に開催します。

私が、必ず月曜日に、データ検証を行うなら下記で問題なしです。

Date()-1⇒日曜日
Date()-2⇒土曜日

これで、問題なしです。

しかし、もし、火曜日にデータ検証をするなら、上記の条件では、土曜日のデータは抽出されません。

そうなると、クエリの変更をするのが、超面倒です。

もちろんパラメータクエリで抽出する方法もありますが、イチイチ日付を入力するのも面倒。

このわずか、1分の作業が面倒で、考えました。

 

MAX関数+DLOOKUP関数 作業手順 その1 データベース確認


日付について順不同のデータベースがあります。

1番新しいレコードは、2021/06/10であり、

1番古いレコードは、2021/06/01です。

MAX関数+DLOOKUP関数 作業手順 その2 1番新しいレコード

このように抽出できました。

DLookUp(“MAX(日時)”,”MT_test”,”ID=” & “ID”)

この数式を見たときは、結構感動です。

このような使い方があるのかと思いました。

この場合は、IDが数字なので、数値型で抽出しています。

もし、IDが文字型であるなら、数式では、クォーテーションが異なりますので、気を付けてください。

Naosuke
下記のコードを参考にしてください。

Me![社員ID] = DLookup(“社員ID”, “MT_社員”, “名前='” & Me![名前] & “‘”)

MAX関数+DLOOKUP関数 作業手順 その3 2番目に新しいレコード

単純に、MAX(日時)から、-1とすれば、完成です。


そう、たったこれだけのことです。

なんだ、カンタンじゃないか?と思いましたか?

そうカンタンなんです。

しかし、コロンブスの卵と一緒で、この発想が大切なのです。

MAX関数+DLOOKUP関数 作業手順 その4 2番目に古いレコード

これも、MAX関数で、できるなら、MIN関数でもできるだろうと、推測できます。


DLookUp(“MIN(日時)+1″,”MT_test”,”ID=” & “ID”)


MIN関数の場合は、1番古いレコードなので、古いレコードから、1日分だけ新しくなっているので、符号が、プラスになります。


これで完成です。

ここがポイント

ここがポイント

Function8.png今回の立役者は、なんと言ってもDLOOKUP関数だと思います。ExcelのVLOOPUP関数で、できるのかは、わかりませんが、DLOOKUP関数は、すごいと思いました。

関数もVBAも、組み合わせることで、素晴らしい結果を返してくれます。

ACCESSを操作して、足掛け4年ですが、ACCESSの更なる可能性を感じました。

2番目に新しいレコードの抽出は、競馬がやっていなければ、思いつきもしないことです。

250番目のセルではなく、1番下セルと言い換える事ができるなら、もう、柔軟な発想は完成に近づいています。

1番新しいレコードを抽出できるなら、2番目に新しいレコードはどの様に抽出するのかと、考えることが大切です。

たとえ、失敗しても、その失敗の積み重ねが、成功を導いてくれるのです。

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

まとめ

関数、VBAのコードの組み合わせは、本当に重要だと思いました。

この技を伝えいたために、Index関数+Match関数の動画をアップしました。

現在は、XLOOKUP関数がリリースされて、本当に便利になりました。

しかし、必ずしも便利な関数が今後も、リリースされるわけではありません。

ならば、与えられたものを組み合わせて、かつ、利用方法を考えるしかありません。

DLOOKUP関数は、使えますね。

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

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

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

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

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

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

スポンサーリンク

Twitterでフォローしよう

おすすめの記事