SGソフトウェアの開発日記

日々の開発に関するあれこれを書き散らかしています。

Excel VBAの検索文で初心者並みの失敗をやらかした件

ときどき紹介していますが、JRAのサイトに掲載されているデータをExcelのデータに取り込むVBAを自分用に作成して使用しています。
以前から馬番が正しく反映されない不具合が発生していたので調べてみました。

不具合は下のように、本来14番となるべき「タイセイラナキラ」の馬番が8番になっているという現象です。

f:id:yokotan:20160313230546p:plain


最初は、JRAのサイトから取得したページを解析する際に、予期しないレイアウトを誤検出しているのかと思ったのですが、トレースしてみると、中京1Rのデータを取得した段階では正しく14番と認識できていました。

どうやら、それ以降の別のレースのデータで上書きしているようなので、該当行にアクセスしようとした時点で実行を止めるようにコードを修正してみたところ、中京12Rの8番「セイラ」のデータで上書きしてしまっていることがわかりました。

そのせいで、中京12Rのデータからは8番「セイラ」の行が消えてしまっています。

f:id:yokotan:20160313230602p:plain


理由はすぐにわかりました。対象馬の記述行の行番号を検索する関数が「タイ(セイラ)ナキラ」の文字の一部を「セイラ」だと誤認識して、誤った行番号を返してしまっていました。HTMLのデータ解析を行なうための部分一致検索の関数を、そのまま使っていたのが原因です。

対策として、完全一致検索の関数を新設し、その関数を検索に使うように修正しました。

当初、馬番がおかしくなる不具合を対策していたつもりだったのが、出走馬の記述行自体が消えてしまう不具合も同時に解決することができたので、恥ずかしいレベルのバグでしたが、結果オーライ。

 

パナソニック CF-RZ4CDDJR レッツノート RZシリーズ