AceessVBAを使ってデータに順番をつける
競馬データを扱っていると
スクレイピングで取った数値データをある項目で並べ替えたりすることが
データ分析を行う上で、必須になってくる。
初めから用意しておけば良いとは思うが
その項目を実際に使うまでは、順位付けが必要かどうか?は判断できない。
VBAで数値項目を昇順(降順)に並べて順位付けする雛形モジュール作成

この記事を読むと、VBAで順位をつけるモジュールが作成できる ❣
この記事を読むと、VBAでテーブルのある数値項目の順位をつけるモジュール(VBA)が作成できる。
これを更新クエリーだけでやると、少なくとも5つほど作成しなければいけない。
ので、Key項目で並べ替えて、SEQ.を付けるといった場合に重宝する雛形モジュールになる。
競馬データを例に取るなら複勝倍率順(馬連順、馬単順)に並べ替えて順番をデータ化
- 複勝倍率順に並べ替えて、複勝人気順を作成する
- 馬連倍率順(馬単倍率順など)
- 前走上り順 〃 、前走上り順 〃
今回のサンプルは前走上り順データを作成するモジュール
これは今日データ分析するのに作成したばかりの出来立てホヤホヤなので、ここで晒しておく!内容に不備がある場合は、ご自身で修正してお使い下さいませ。
なぜExcelでなく、Accessなのか?というと・・・
- 大量データを扱える
- 並べ替えが楽
参考 AccessVBA:前走上り順データを作成するモジュール
Function RAgariRenban()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim strSQL As String
Dim BL_DATE As Date, BL_ZYOMEI As String, BL_R As Integer
Dim BL_AGARI As Double, BL_SEQ As Integer
Dim i As Long, n As Long
strSQL = "SELECT 開催日, 場名, R, 推定上り, 推定上り順" & " "
strSQL = strSQL & "FROM WK_DT" & " "
strSQL = strSQL & "WHERE 推定上り > 0" & " "
strSQL = strSQL & "ORDER BY 開催日, 場名, R, 推定上り"
strSQL = strSQL & ";"
'カレントデータベースを変数に代入する
Set db = CurrentDb
'クエリを実行してレコードセットを開く
Set rst = db.OpenRecordset(strSQL, dbOpenDynaset)
RAgariRenban = False
If rst.RecordCount <= 0 Then Exit Function
i = 1
Do
rst.Edit
If i = 1 Then
BL_DATE = rst!開催日
BL_ZYOMEI = rst!場名
BL_R = rst!R
BL_AGARI = rst!推定上り
BL_SEQ = 1
n = 0
End If
'''ブレイクkey
If BL_DATE = rst!開催日 And BL_ZYOMEI = rst!場名 And BL_R = rst!R Then
If BL_AGARI = rst!推定上り Then
'''ここまで一緒だと「推定上り順」は重複する
rst!推定上り順 = BL_SEQ
If i > 1 Then
n = n + 1
End If
Else
BL_SEQ = BL_SEQ + 1 + n
rst!推定上り順 = BL_SEQ
BL_AGARI = rst!推定上り
n = 0
End If
Else
BL_DATE = rst!開催日
BL_ZYOMEI = rst!場名
BL_R = rst!R
BL_AGARI = rst!推定上り
BL_SEQ = 1
n = 0
rst!推定上り順 = BL_SEQ
End If
rst.Update
i = i + 1
rst.MoveNext
Loop Until rst.EOF = True
rst.Close
RAgariRenban = True
End Function
※前回使用した複勝順作成を再利用してモジュールを作成。
一つ一つの命令の解説は、このブログではしていないので、ご自身でググってみてね。
参考 Accessマクロ:前走上り順データを更新するマクロサンプル抜粋


※サブマクロを書き換えれば、データ更新はこれを流用すれば手順での更新ミスが激減する。
データ分析してみた結果は・・・?
特別に何かプラスが出るようなことは発見出来なかった。
まだコーナー順を調べた方が何かありそうな雰囲気はあるな~と感じた昨日から今日の2日間であった。
前走上り①番手の分析データのサンプル


編集後記
なんだかんだと思いついては、データ分析してみるけど
コレ!といった使えるモノはなかなか見つからないね~( ̄▽ ̄)。。。
簡単に見つかるなら、みんな億万長者になってしまうもんねぇw
それでも、気になることは自分で即座に分析したい衝動に襲われるので、仕方ないかな~と思っている。
結局アナログ予想が一番当たるから「競馬は面白い!」のかも知れない♡
また気が向いたらデータ分析の一部をアップするかも知れないので、応援してね。
それでは、またね~😎