【Excel】2020年12月JRAホームページ更新によるコピペシステム ExcelVBAの変更履歴を記す

Excel
スポンサーリンク

毎年12月初旬にJRAホームページの更新がある

アナウンスなしで12月初旬の月~火あたりの深夜にポンと変更になっていることが多い。大幅なテキスト表示位置が前週と違う場合は、プログラム修正に時間が掛かる場合があるのでコピペツールだけ走らせて1R~12Rまでのコピペ内容だけとりあえず保存しておく。データ加工だけVBA完成時にまとめて走らせる。2019年は下記③のテキスト格納仕様が私にとっては「改悪」だったので、かなり時間が掛かってしまった。またこの年は馬毎のレース「コーナー通過順位」も追加になりデータベースもいじることになった為、更にプログラム修正とテストに時間を費やすことになった。

2020年:JRAホームページ変更点は大きくは下記4点

①オッズ・出馬表・レース結果・払戻 画面とそれぞれのレース選択画面6画面

  • 「オッズ」 と オッズ「レース選択」
  • 「出馬表」 と 出馬表「レース選択」
  • 「レース結果」 と レース結果「レース選択」 

②出馬表レース選択画面配置が大幅変更

  • レース名
  • コース・距離・頭数
  • 出馬表・オッズ・レース結果

コピペ時テキストのずれと、クリック位置が「レース番号」から「出走表」に移動になり「レース番号」を押しても該当レースにはいけない仕様変更。

※オッズ・レース結果は従来通り、「レース番号」から該当レースにいける。

③該当レース画面下、配当金欄テキスト格納方法が2018年仕様に戻る

2019年12月変更で払戻金テキスト格納方法が変更になったが、今回2018年仕様に戻る。これはコピペしている私にとっては改良になる。(戻っただけなんだけどね)

④払戻画面の画面比が他と同じになった。

※払戻情報は、該当レース下から取得可能なため、払戻画面からの作業はない。

出馬表 レース選択の画面 2021年度仕様

出馬表 赤枠で括弧っている箇所が変更された箇所

出馬表 レース選択の画面

今回から出馬表はレース番号を押しても出馬表に飛ばない。レース右横の「出馬表」を押す。

出馬表 の画面

※レース結果や最終オッズと違い、出馬表は次週の木曜日には消えてしまうので、水曜日までにコピペ保存しておかなければならない。

上記赤枠4か所で一番の変更点は、コース・距離・頭数が一枠になったこと

以外かも知れないが、プログラム的にはクリック位置が変更になるのは、座標を変更するだけなのでそれほど大きな変更にはならない。但し潜在的なバグを内包するようなプログラム仕様だとクリック位置がズレてしまうなどの根本的な改造が必要になる場合もある。

コース・距離・頭数 をコピペすると 2021年仕様だとこうなる。

2020年12月6日(日曜) 3回中京2日
ご覧になりたいレースの出馬表ボタンをクリックしてください。
注記:コース・距離・頭数の「m」はメートル全てのレースを表示
レース番号発走時刻レース名変更コース距離頭数馬体重出馬表オッズレース結果レース映像WIN5
1レース9時55分2歳未勝利(混合)[指定]ダート1,800m13頭出馬表未発表未確定
2レース10時25分3歳以上1勝クラス(500万下)[指定]ダート1,200m16頭出馬表未発表未確定
3レース10時55分3歳以上1勝クラス(500万下)牝[指定]ダート1,800m10頭出馬表未発表未確定
4レース11時25分2歳未勝利(混合)[指定]芝1,200m18頭出馬表未発表未確定
5レース12時15分メイクデビュー中京芝1,400m14頭出馬表未発表未確定
2歳新馬(混合)[指定]
6レース12時45分3歳以上1勝クラス(500万下)(混合)[指定]ダート1,800m10頭出馬表未発表未確定
7レース13時15分3歳以上1勝クラス(500万下)[指定]芝2,200m18頭出馬表未発表未確定
8レース13時45分3歳以上1勝クラス(500万下)(混合)[指定]ダート1,400m16頭出馬表未発表未確定
9レース14時15分こうやまき賞芝1,600m8頭出馬表未発表未確定
2歳1勝クラス(500万下)(混合)(特指)
10レース14時50分中京日経賞芝1,200m18頭出馬表未発表未確定ウインファイヴ 1レース目
3歳以上2勝クラス(1000万下)(混合)[指定]
11レース15時30分チャンピオンズカップGⅠダート1,800m16頭出馬表オッズ未確定ウインファイヴ 4レース目
3歳以上オープン(国際)(指定)
12レース16時15分鳴海特別ダート1,400m16頭出馬表未発表未確定
3歳以上2勝クラス(1000万下)(混合)[指定]
ページトップへ戻る
馬券は20歳になってから
JRAのギャンブル等依存症対策
サイトマップ
リンク
ご利用に際して
Horse Racing in Japan
Copyright © Japan Racing Association All rights reserved.

2020年仕様だと、こうなる。

2019年12月1日(日曜) 4回中京2日
天候晴
芝良
ダート良
開催選択へ戻る
ご覧になりたいレースの出馬表ボタンをクリックしてください。
全てのレースを表示
出馬表発走時刻競走名変更距離馬場頭数馬体重WIN5
1レース9時55分2歳未勝利(混合)[指定]1,800メートルダート15頭
2レース10時25分3歳以上1勝クラス(500万下)牝[指定]1,200メートルダート16頭
3レース10時55分3歳以上1勝クラス(500万下)(混合)[指定]1,900メートルダート7頭
4レース11時25分2歳未勝利(混合)[指定]1,200メートル17頭
5レース12時15分メイクデビュー中京1,400メートル14頭
2歳新馬(混合)[指定]
6レース12時45分3歳以上1勝クラス(500万下)[指定]1,800メートルダート11頭
7レース13時15分3歳以上1勝クラス(500万下)(混合)[指定]2,000メートル14頭
8レース13時45分3歳以上1勝クラス(500万下)[指定]1,400メートルダート14頭
9レース14時15分桑名特別1,200メートル18頭
3歳以上1勝クラス(500万下)[指定]
10レース14時50分名古屋日刊スポーツ杯2,000メートル10頭ウインファイブ1レース目
3歳以上2勝クラス(1000万下)(混合)(特指)
11レース15時30分チャンピオンズカップGⅠ1,800メートルダート16頭ウインファイブ4レース目
3歳以上オープン(国際)(指定)
12レース16時15分鳴海特別1,400メートルダート16頭
3歳以上2勝クラス(1000万下)(混合)[指定]
ページトップへ戻る
馬券は20歳になってから
ギャンブル障害への対応
サイトマップ
リンク
ご利用に際して
Horse Racing in Japan
Copyright © Japan Racing Association All rights reserved.

今回の2021年仕様の方がデータ化するのに難易度が高いセル格納になっている。

  • 上記は コース・距離・頭数が1セルに格納されている。
  • 上記は、1~4、6~8Rが1行、5、9~12Rが2行仕様になっている。
  • 下記は、「距離」と「馬場」と「頭数」が違うセルに格納されている。
  • 下記は、全てのレースが2行仕様になっている。

※この変更分は難易度が増している2021年仕様のみプログラム公開しておく。

コース・距離・頭数が1セルに格納されている場合の文字列操作

コピペで’HEAD’に貼付、VBAで加工’出走RH’にデータ化(変更箇所抜粋)

'2020.12.02これ以降全て変更
'競走名(レース名)'競走条件など
            wk_nm1 = Sheets("HEAD").Cells(RET + 1, 1)
            If CHRCVT(wk_nm1) = "" Then
                Sheets("出走RH").Cells(LC + 1, 7) = Sheets("HEAD").Cells(RET, 3)
                Sheets("出走RH").Cells(LC + 1, 8) = Sheets("HEAD").Cells(RET + 1, 3)
            Else
                Sheets("出走RH").Cells(LC + 1, 7) = ""
                Sheets("出走RH").Cells(LC + 1, 8) = Sheets("HEAD").Cells(RET, 3)
            End If
'馬場
'replace後、2文字目'→'なら3文字セット
            Sheets("出走RH").Cells(LC + 1, 10) = Sheets("HEAD").Cells(RET, 5)
            wk_nm1 = Sheets("出走RH").Cells(LC + 1, 10)
            wk_nm2 = Replace(wk_nm1, "ダート", "ダ")
            If Mid(wk_nm2, 2, 1) = "→" Then
                Sheets("出走RH").Cells(LC + 1, 10) = Left(wk_nm2, 3)
            Else
                Sheets("出走RH").Cells(LC + 1, 10) = Left(wk_nm2, 1)
            End If
'出走頭数
            Sheets("出走RH").Cells(LC + 1, 11) = myNo1(Right(Sheets("HEAD").Cells(RET, 5), 3))
'距離
            Sheets("出走RH").Cells(LC + 1, 9) = Sheets("HEAD").Cells(RET, 5)
            wk_nm1 = Sheets("出走RH").Cells(LC + 1, 9)
            wk_nm2 = myNo1(Left(Replace(wk_nm1, "ダート", "ダ"), 6))
            Sheets("出走RH").Cells(LC + 1, 9) = wk_nm2

※myNo1だけ自作関数(下記に記載)

myNo1 は、自作関数

Function myNo1(r As String)
'
'文字列から数字だけを取り出す
'
  Dim myStr As String
  Dim myN As String
  Dim CNT As Integer
    For CNT = 1 To Len(r)
        myStr = Mid(r, CNT, 1)
        If myStr Like "[0-9]" Then
            myN = myN & myStr
        End If
    Next CNT
    If IsNumeric(myN) Then
        myNo1 = myN * 1
    Else
        myNo1 = ""
    End If
End Function

可変行は’1レース’~’12レース’で文字列検索し変数RETに行を返す。

Function myLC(r As String, sh As String)
'
'文字列rが何行目にあるか(SHEET sh=sh_nmを1000行まで検索する)
'戻り値:発見した最初の行を返す
'
    Dim CNT As Integer
      Sheets(sh).Select
      myLC = 0
      For CNT = 1 To 1000
        If Cells(CNT, 1) Like r & "*" Then
            myLC = CNT
            Exit For
        End If
      Next CNT
End Function

完成した出走RHデータベースのテーブル内容

開催日曜日場名日目競走名競走条件距離ダ芝出走頭数WIN5発走時刻変更
2020/12/061中京3212歳未勝利(混合)[指定]1800139時55分
2020/12/061中京3223歳以上1勝クラス(500万下)[指定]12001610時25分
2020/12/061中京3233歳以上1勝クラス(500万下)牝[指定]18001010時55分
2020/12/061中京3242歳未勝利(混合)[指定]12001811時25分
2020/12/061中京325メイクデビュー中京2歳新馬(混合)[指定]14001412時15分
2020/12/061中京3263歳以上1勝クラス(500万下)(混合)[指定]18001012時45分
2020/12/061中京3273歳以上1勝クラス(500万下)[指定]22001813時15分
2020/12/061中京3283歳以上1勝クラス(500万下)(混合)[指定]14001613時45分
2020/12/061中京329こうやまき賞2歳1勝クラス(500万下)(混合)(特指)1600814時15分
2020/12/061中京3210中京日経賞3歳以上2勝クラス(1000万下)(混合)[指定]120018114時50分
2020/12/061中京3211チャンピオンズカップGⅠ3歳以上オープン(国際)(指定)180016415時30分
2020/12/061中京3212鳴海特別3歳以上2勝クラス(1000万下)(混合)[指定]14001616時15分

レース結果は2021年仕様で簡単になったのでココでは省略

  • 「枠番」が「枠」になった。
  • 「ブリンカー」が「ブリンカー着用」になった。
  • 一番大きな変更箇所はレース結果下の払戻が1セルに馬番・払戻・人気が1行1セルごとに改良されている(2019年仕様に戻る)

編集後記

今回のプログラム修正中にこんなデータを見つけたので、競馬ファンなら既に知っていることだとは思うが、なかなかスゴイことだよね~データ枠取ってなかったらデータベースからいじらないとダメだからプログラマーの経験値を試されるお題を投げてくるよね( 一一)

2020年11月23日(月曜) 5回阪神7日 12Rで3着同着3頭という奇跡

わたしゃ、ワイドは3-3着もあるのかな?と思ってデータベースは10個テーブル枠を設けていたが1-2着、1-3着、2-3着の7つでよかったみたいだ。

タイトルとURLをコピーしました