データ収集がようやく終わりました。
やったことはこちらの記事にて。
ちょっとずつやってかれこれ2週間くらいかかりましたかね。辛かった…。
次は収集したデータを繋げる作業です。
長いので複数に分けようかと思います。
やったこと
取込①
先週の結果分析のデータをエクセルの取り込んでいきます。
これはめんどくさいけど手動です(テキストをエクセルに転記)。
これにTARGET frontier JVから取得した開催タイム分析のデータをくっつけます。
当然、このタイミングでは紐づくキーがありませんので、自分で生成する必要があります。
僕の場合は雑に日付+馬名でやりました。両方のデータに共通して保持している情報なので可能というわけです。
あとは本当に紐づけるだけなので適当にシートに展開してVLOOKUPなりやるだけです。
こんな感じでデータを結合して横1列にしています。
先週の結果分析だけでは拾えない情報(例えばLAPタイムなど)がくっついたデータとなります。
取込②
次の作業は軽くプログラミングが必要です。といってもVBAですが。
取込②はTARGET frontier JVより取得した出馬表と取込①のデータを結合します。
出馬表のテキストファイルをエクセルに転記して、
同じように日付+馬名で無理矢理KEYを作成して結合します。やりたいことは同じですね。
↓サンプルコード
‘勝ち馬名
Dim win As String
win = Cells(i, 4)‘KEY生成
Dim key As String
key = date1 & win‘MAINシートからマッチするレースを検索
‘添え字(MAIN)
Dim mi As Long
mi = 0
Dim myRange As Range
Dim myObj As RangeSet myRange = Worksheets(“MAIN”).Range(“U1:U100000”)
Set myObj = myRange.Find(key, LookAt:=xlWhole)If myObj Is Nothing Then
‘ない場合
MsgBox “‘” & key & “‘はありませんでした”
Else
‘行数取得
mi = myObj.Row
End If
「mi」にマッチしたシートの行数が入ってくるので、あとはこれを転記するだけの簡単なお仕事です。
‘値セット
Cells(i – 4, 17) = Worksheets(“MAIN”).Cells(mi, 1)
Cells(i – 4, 18) = Worksheets(“MAIN”).Cells(mi, 2)
Cells(i – 4, 19) = Worksheets(“MAIN”).Cells(mi, 3)
Cells(i – 4, 20) = Worksheets(“MAIN”).Cells(mi, 4)
Cells(i – 4, 21) = Worksheets(“MAIN”).Cells(mi, 5)
アウトプット
取込③
取込②のアウトプットにまだ結合したいデータがあるので追加でやります。
追加するのは、TARGET frontier JVから取得した1レースごとの詳細成績です。
CSVファイルになります。
色々やり方はあると思いますが、同じエクセルのワークフォルダに一度展開してやりました。
それだど↑で書いたコードと同じ処理が使えるので楽です。
↓CSVファイルを読み込んで転記するコード(ネットから拾ったのもモロぱくり)
‘CSV取込
Dim A_Sheet ‘Excelファイルのシート名を入れ込む変数’
Dim Csv_Import_File ‘Excelファイルに取り込むCSVファイルの名前を入れ込む変数’A_Sheet = ActiveSheet.Name ‘現在アクティブなシート名を変数 A_Sheet に入れ込む’
Csv_Import_File = Application.GetOpenFilename(“CSVファイル,*.csv”) ‘CSVファイルを選択する’
If Csv_Import_File = “False” Then Exit Sub ‘キャンセルなら終了’ThisWorkbook.Sheets(“WK”).Range(“A1:AZ100000”).ClearContents ‘「CSVデータ取込み」シートのセル「A1~AZ100000」をクリアする’
With Workbooks.Open(Csv_Import_File)
.Sheets(1).Cells.Copy ThisWorkbook.Sheets(“WK”).Range(“A1”) ‘全てのデータをこのブックの「CSVデータ取込み」シートにコピー’
.Close ‘CSVファイルを閉じる’
End WithWorksheets(A_Sheet).Activate ‘A_Sheet という名前のシートをアクティブにする’
あとはお得意の行数取得処理をぶち込んでやれば終わり!
最終アウトプット
これでとりあえず1レースで必要な情報は全部結合することができました。
これからやるのは、これを全レース分集計してデータベースに格納すること。
そしてそのデータベースをインプットにして指数を作るところになります。
まだ先は長いです・・・
コメント