VBAを勉強していて、特にExcelで、1番最後のセルという考え方を理解したときに、少しの感動があります。
今回は、ACCESSで、1番新しいレコード、2番目に新しいレコードと、特に日付を特定しない抽出方法です。
ここでな、DLOOKUP関数が以外な働きをします。
目次
2番目に新しいレコードの抽出はどうやるの?
こんにちは。伊川(@naonaoke)です。
最新のレコードの抽出は、集計クエリでもできます。
また、MAX関数でも抽出可能です。
しかし、人間の欲望は果てしなく、2番目に新しいレコードは、抽出できるのだろうか?
このような疑問を持つようになると、VBAマニアックスです。
このような疑問は、実務でもあるあるです。
今回は、関数を組み合わせる抽出方法です。
このブログはこんな人にお勧め
- ACCESSでクエリを勉強している人
- データ抽出に関して、日付のみで抽出している人
- DLOOKUP関数の意外な使い方を知りたい人
このブログを、読み終わるころには・・・・
ExcelのVLOOPUP関数と違って、DLOOKUP関数は、色々な用途があります。先頭にDが付く関数は、データベース専用に作成された関数かもしれません。
DSUM関数もデータベース専用関数だと私は思っています。
クエリを作成するには、柔軟な思考回路が必要だと実感できます。
2番目に新しいレコード
結論から言うと、MAX関数と、DLOOKUP関数を利用します。
意外な組み合わせかもしれませんが、この2人が手を組みます。
そうすると、3番目だろうが、4番目だろうが、自由自在になります。
この方法を思いついたキッカケは、競馬です。
競馬は、土日に開催します。
私が、必ず月曜日に、データ検証を行うなら下記で問題なしです。
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が文字型であるなら、数式では、クォーテーションが異なりますので、気を付けてください。
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日分だけ新しくなっているので、符号が、プラスになります。
これで完成です。
ここがポイント
今回の立役者は、なんと言ってもDLOOKUP関数だと思います。ExcelのVLOOPUP関数で、できるのかは、わかりませんが、DLOOKUP関数は、すごいと思いました。
関数もVBAも、組み合わせることで、素晴らしい結果を返してくれます。
ACCESSを操作して、足掛け4年ですが、ACCESSの更なる可能性を感じました。
2番目に新しいレコードの抽出は、競馬がやっていなければ、思いつきもしないことです。
250番目のセルではなく、1番下セルと言い換える事ができるなら、もう、柔軟な発想は完成に近づいています。
1番新しいレコードを抽出できるなら、2番目に新しいレコードはどの様に抽出するのかと、考えることが大切です。
たとえ、失敗しても、その失敗の積み重ねが、成功を導いてくれるのです。
まとめ
関数、VBAのコードの組み合わせは、本当に重要だと思いました。
この技を伝えいたために、Index関数+Match関数の動画をアップしました。
現在は、XLOOKUP関数がリリースされて、本当に便利になりました。
しかし、必ずしも便利な関数が今後も、リリースされるわけではありません。
ならば、与えられたものを組み合わせて、かつ、利用方法を考えるしかありません。
DLOOKUP関数は、使えますね。
今回も最後まで、読んでいただき、ありがとうございました。
今回のサンプルファイルは、No234です。
わからない事を延々と考えるのは、無駄です。
- なんで作動かないの?
- もうやだ!VBAなんか嫌い!
- ネットで調べても情報がない!
必ず作動するコードが、ここにあります。