ACCESSは、同一グループという処理に関しては、Excelよりも楽です。
当然、データベースとしては、想定内のことでしょう。
しかし、Dcount関数で行うと重いです。
そう、ヤツの出番です。

スポンサーリンク

同一グループで順位をつける 音速の速さ

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

 

少し、乱暴ですが、

VBAを勉強するには、競馬が最高です。

教えてgooの達人に言われたことがあります。

最近、本当に実感します。

もし、競馬をやっていなかったら、ここまでの、ブログ、動画をアップすることはできませんでした。

毎週、こんなデータベースにしたいと思いながら、競馬の検証をしています。

今回は、コードを作成した私が、目が点になりました。

Naosuke
ものスゲー速く、同一グループ内に、順位を付けます。

 

スポンサーリンク

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

今回のテーマ
  • ACCESSで、順位を付けている人
  • ACCESSで、VBAを勉強している人
  • ACCESSで、Dcount関数を利用しているが、作動が重くなり、Dcount関数が嫌いになった人

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

同一グループないで、順位を付ける時は、今回のコードを必ず利用するようになります。
本当に速いです。
Dcount関数で実行すると、20秒位時間がかかりますが、今回のコードは、わずか2秒です。
スポンサーリンク

ACCESSにおいてのDcount関数

私としては、VLOOKUP関数ほど、Dcount関数は嫌いではありません。

しかし、本当に重い。

なぜでしょうか?

答えはカンタン!

Dcount関数を処理する回数が何回も行なわれて効率悪いです。

カウントという位なので、何回もカウントするからです。

Naosuke

泣けてくるぜ、Dcount関数

君には、君の使命があるさ。

Excelでやるなら、COUNTIFS関数

ACCESSでやるなら、Dcount関数

この辺が定番です。

Naosuke
今回のヒントは、DAOで連番が振れたので、順位だって、DAOでいけるんじゃね?

ココが出発点でした。

音速の順位付 作業手順 その1 データベース確認

このようなデータベースがあります。

レコード数は、5,416件です。

余談

データベースを作成するときは、このように作成したほうが、後々便利です。

ご視聴者様からコメントをいただきましたが、この、親ID、子IDの発送も競馬です。

つまり、実務で作成しているデータベースも、実は、JRAのパクリです。

天下のJRAが、雑なデータベースを作成するわけがないのです。

このパクリデータベースで、集計が本当に楽になりました。

音速の順位付け 作業手順 その2 標準モジュールにコードを仕込む

 

ブログでは、お見せできませんが、ぜひ、動画で確認してください。

Naosuke
お前の努力など、俺の2秒

マジで、本当に速いです。

音速の順位付け 作業手順 その3 これってもしかして更新クエリ?

Naosuke

これは、更新クエリと同じじゃないの?

そう思ったあなた!

スルドイ!

 

Accessのテーブルを更新する場合、レコードセットを利用する方法と、更新クエリを利用する方法があります。

前々回紹介したのが、更新クエリで実行する方法です。

 

今回は、レコードセットで更新する方法です。

どちらを選択するかは、ケースバイケースですね。

しかし前回も言いましたが、ループを、Do~Loopに変更するだけで、Excelのように、少ないコードで処理ができます。

Naosuke
散々、動画で、偉そうなことを言いましたが、ここが、ACCESSの出発点だと思いました。

 

ACCESSの考え方
ACCESSの標準機能を利用する
カンタンなクエリ、アクションクエリを覚える
クエリで時間がかかる処理は、DAOを利用して、一括処理をする
他のアプリと連携するには、ADOがある
その前提には、主キーの存在がある

Naosuke
今回のように、まさに、Dcount関数を利用して、時間がかかるなら、DAOの処理ですね

 

ここがポイント

ここがポイント
Function8.png
ACCESSを利用し始めたときは、無我夢中でした。
VBAも、オートルックアップクエリもわからず、Excelの知識のみで、ACCESSを利用していました。
DAOも、ADOもわからず、ExcelからACCESSに転送するなら、こう書くんだ!と思い、コピペをしていました。
どうしても、ハードルが高く、自分で、難しく考えていました。
ここにきて、DAOの理屈を理解したときに、ACCESSの処理を最速で行う方法が、なんとなく理解できました。
そう、まだ、なんとなくです。
しかし、競馬への欲は、自分の中では、留まらず、昨日よりも、快適なデータベースを求めたときに、
さらに、ACCESSのスキルが向上した私がいると思っています。
動画とブログでわかりやすくExcelとACCESSを紹介しています

まとめ

また、ACCESSが楽しくなってきました。

もちろん、Excelも、pythonもです。

その中で、プログラムスキル向上は、目的ではなく、手段であり、目的達成のために勉強することが楽しいです。

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

Naosuke
今回のサンプルファイルは、著作権に抵触する可能性があるので、配布についてはできません。
大変申し訳ないです。

<strong><span style=”background-color: #ff00ff; color: #ffffff; font-size: 24pt;”>今回のサンプルファイルはありません。</span></strong>

毎日の業務が、3時間短縮できます

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

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

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

 

スポンサーリンク

Twitterでフォローしよう

おすすめの記事