毎年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
Excel VBA 逆引き大全 600の極意 Microsoft 365/Office 2021/2019/2016/2013対応
Excel VBA 逆引き大全 600の極意 Microsoft 365
※私が持っているのが2016年版(以下は2016)
- ExcelVBAの基本構文
- セルの操作
- 関数
- ワークシート、ウィンドウの操作
- ブック操作
- データ操作
- テーブル・ピボットテーブル
- 図形
- グラフ
- ユーザーフォーム
- 印刷
- ファイルとフォルダ
- データ連携
- イベント
- バージョン・トラブルシューティング・エラー処理
- 高度なテクニック
- 索引
目次が巻頭で検索が巻末。昔のタイプの本の構成だが、索引がページでなくTipsという見出しNo.になっていて慣れるまでは検索しづらい。
Amazonレビューは★3.9
完成した出走RHデータベースのテーブル内容
開催日 | 曜日 | 場名 | 回 | 日目 | R | 競走名 | 競走条件 | 距離 | ダ芝 | 出走頭数 | WIN5 | 発走時刻 | 変更 |
2020/12/06 | 1 | 中京 | 3 | 2 | 1 | 2歳未勝利(混合)[指定] | 1800 | ダ | 13 | 9時55分 | |||
2020/12/06 | 1 | 中京 | 3 | 2 | 2 | 3歳以上1勝クラス(500万下)[指定] | 1200 | ダ | 16 | 10時25分 | |||
2020/12/06 | 1 | 中京 | 3 | 2 | 3 | 3歳以上1勝クラス(500万下)牝[指定] | 1800 | ダ | 10 | 10時55分 | |||
2020/12/06 | 1 | 中京 | 3 | 2 | 4 | 2歳未勝利(混合)[指定] | 1200 | 芝 | 18 | 11時25分 | |||
2020/12/06 | 1 | 中京 | 3 | 2 | 5 | メイクデビュー中京 | 2歳新馬(混合)[指定] | 1400 | 芝 | 14 | 12時15分 | ||
2020/12/06 | 1 | 中京 | 3 | 2 | 6 | 3歳以上1勝クラス(500万下)(混合)[指定] | 1800 | ダ | 10 | 12時45分 | |||
2020/12/06 | 1 | 中京 | 3 | 2 | 7 | 3歳以上1勝クラス(500万下)[指定] | 2200 | 芝 | 18 | 13時15分 | |||
2020/12/06 | 1 | 中京 | 3 | 2 | 8 | 3歳以上1勝クラス(500万下)(混合)[指定] | 1400 | ダ | 16 | 13時45分 | |||
2020/12/06 | 1 | 中京 | 3 | 2 | 9 | こうやまき賞 | 2歳1勝クラス(500万下)(混合)(特指) | 1600 | 芝 | 8 | 14時15分 | ||
2020/12/06 | 1 | 中京 | 3 | 2 | 10 | 中京日経賞 | 3歳以上2勝クラス(1000万下)(混合)[指定] | 1200 | 芝 | 18 | 1 | 14時50分 | |
2020/12/06 | 1 | 中京 | 3 | 2 | 11 | チャンピオンズカップGⅠ | 3歳以上オープン(国際)(指定) | 1800 | ダ | 16 | 4 | 15時30分 | |
2020/12/06 | 1 | 中京 | 3 | 2 | 12 | 鳴海特別 | 3歳以上2勝クラス(1000万下)(混合)[指定] | 1400 | ダ | 16 | 16時15分 |
レース結果は2021年仕様で簡単になったのでココでは省略
- 「枠番」が「枠」になった。
- 「ブリンカー」が「ブリンカー着用」になった。
- 一番大きな変更箇所はレース結果下の払戻が1セルに馬番・払戻・人気が1行1セルごとに改良されている(2019年仕様に戻る)
編集後記
今回のプログラム修正中にこんなデータを見つけたので、競馬ファンなら既に知っていることだとは思うが、なかなかスゴイことだよね~データ枠取ってなかったらデータベースからいじらないとダメだからプログラマーの経験値を試されるお題を投げてくるよね( 一一)
2020年11月23日(月曜) 5回阪神7日 12Rで3着同着3頭という奇跡
わたしゃ、ワイドは3-3着もあるのかな?と思ってデータベースは10個テーブル枠を設けていたが1-2着、1-3着、2-3着の7つでよかったみたいだ。