あるテキストファイルから文字列データ(オッズデータ)を取り出してエクセルのシートに貼り付けようと試みています。競馬をされている方は分かると思いますが、出走頭数により枠連と馬連の関連が変わります。(例:馬連(1)-(13)は18頭立てなら枠連1-7、13頭立てなら枠連1-8。馬連(7)-(15)は18頭立てなら枠連4-7、16頭立てなら4-8。)これを出走頭数の変化に伴ってエクセルの同一シート内にそれぞれ対応したオッズを貼り付けるにはどういったプログラムを(VBAマクロ)組めばいいでしょうか?
A列に枠連の番号(若い番号順に1-1、1-2、・・・)
B列にその枠連のオッズ
C列に対応する馬連の番号(先ほどの例で言えば馬連(1)-(13)は18頭立てなら枠連1-7に、13頭立てなら枠連1-8に含まれる)
D列にその馬連のオッズ
A列の枠連の番号に関していえば、当然出走頭数により存在しないものが出てくる(例:13頭立てのときの1-1,2-2,3-3いわゆる”ゾロ目”)
元データには枠連、馬連ともにA列のある行に固定長文字列で
01:------000151000055000234000524000036000235
などというように
01:=軸1番から
枠連(馬連)1-1=オッズなし(------)
枠連(馬連)1-2=15.1
枠連(馬連)1-3=5.5
と6バイト単位で表示されています。
高度な処理だと思いますが分かる方教えてください。よろしくお願い致します。
No.5ベストアンサー
- 回答日時:
申し訳ないのですが私は EXCEL の知識が全くないんです。
セルからデータを読み、別のセルに代入と言う事もできません。
EXCEL の VBAのEditor と言われても何の事か分かりません。
Sub プロシージャ の事をいうのでしょうか?
だったらそのまま貼り付ければ動くと思います。
競馬の予想ソフトを作ろうとしている方が、これを EXCEL に移植出来ない。なんて信じられません。
もしこのプログラムが理解できないのであれば、私にはお手伝い出来ません。
(出走頭数と馬番・枠番の関係は非常に難しいんです。出来る人は限られるかも。)
Ozz$(153, 4)の出来上がりイメージは、以下の様になります。
1(枠連)2:枠オッズ 3:馬連 4:馬オッズ
1-1 .0 01-02 15.1
1-2 15.1 01-03 5.5
1-2 15.1 01-04 23.4
1-3 5.5 01-05 52.4
1-3 5.5 01-06 3.6
取消し、除外馬の箇所のオッズは Val関数で変換された時点で0になります。
自分の好きな様に表示を変えてください。(有効オッズで0になる事はありません!)
とりあえず間違えてしまった箇所を訂正しておきます。
「枠に何頭入っているかを調べる。」の部分を勘違いして間違えました。以下の様に訂正して下さい。
'元データ
Dim 枠Data(8), 馬Data(18), Wozz, Uozz
'Ozz$(153,4) は 153通りあり、1:枠 2:枠連OZZ 3:馬連 4:馬連OZZ を入れる。
Dim 枠頭数%(8), 枠番%(18), Ozz$(153, 4), uma1%, uma2%
'サンプルデータ
tousu = 18
枠Data(1)="01:------000151000055000234000524000036000235000324"
馬Data(1)="01:------000151000055000234000524000036000235000324"
'枠に何頭入いるかを調べる。
For i = 1 To tousu
If i <= 8 Then
w = i
Else
w = 9 - i Mod 8: If w = 9 Then w = 1
End If
枠頭数(w) = 枠頭数(w) + 1
Next i
'馬番と枠の関係
ban = 0
For w = 1 To 8
For i = 1 To 枠頭数(w)
ban = ban + 1
枠番(ban) = w
Next i, w
'組み合わせ と オッズ
n = 0
For uma1 = 1 To tousu - 1
For uma2 = uma1 + 1 To tousu
n = n + 1
waku1 = 枠番(uma1): waku2 = 枠番(uma2)
'枠連
Ozz(n, 1) = Format(waku1, "#") + "-" + Format(waku2, "#")
'枠連オッズ
Wozz = Val(Mid(枠Data(waku1), 6 * (waku2 - 1) + 4, 6)) / 10
Ozz(n, 2) = Format(Wozz, "#.0")
'馬連
Ozz(n, 3) = Format(uma1, "0#") + "-" + Format(uma2, "0#")
'馬連オッズ
Uozz = Val(Mid(馬Data(uma1), 6 * (uma2 - 1) + 4, 6)) / 10
Ozz(n, 4) = Format(Uozz, "#.0")
Next uma2
Next uma1
プログラミングの知識がないばっかりに皆さんにご迷惑をおかけしましたが、親切にご回答くださる方がいらっしゃったので助かりました。ありがとうございます。うれしい限りです。
No.6
- 回答日時:
#1です。
#5さんの回答で出来ますね。素晴らしいです。
いまさら出る幕は無いのですが、ちょっと別のアプローチを思いついたので書きます。
頭数によって枠番と馬番の関係は決まっていると思いますし、データの位置も同じなら、事前に希望の形で出走頭数毎のシートを用意しておいたらどうでしょう?
枠列の値が 1-5 なら先頭の1と最後の5で、オッズデータの読む行と読む位置を見つけて転記するって感じです。
No.4
- 回答日時:
やっとアップ出来た。
こんな感じで如何ですか?
'元データ
Dim 枠Data(8), 馬Data(18), Wozz, Uozz
'Ozz$(153,4) は 153通りあり、1:枠 2:枠連OZZ 3:馬連 4:馬連OZZ を入れる。
Dim 枠頭数%(8), 枠番%(18), Ozz$(153, 4), uma1%, uma2%
tousu = 18
'枠に何頭入っているかを調べる。
For i = 1 To tousu
w = i Mod 8: If w = 0 Then w = 8
枠頭数(w) = 枠頭数(w) + 1
Next i
'馬番と枠の関係
ban = 0
For w = 1 To 8
For i = 1 To 枠頭数(w)
ban = ban + 1
枠番(ban) = w
Next i, w
'組み合わせ と オッズ
n = 0
For uma1 = 1 To tousu - 1
For uma2 = uma1 + 1 To tousu
n = n + 1
waku1 = 枠番(uma1): waku2 = 枠番(uma2)
'枠連
Ozz(n, 1) = Format(waku1, "#") + "-" + Format(waku2, "#")
'枠連オッズ
Wozz = Val(Mid(枠Data(waku1), 6 * (waku2 - 1) + 1, 6)) / 10
Ozz(n, 2) = Format(Wozz, "#,0")
'馬連
Ozz(n, 3) = Format(uma1, "0#") + "-" + Format(uma2, "0#")
'馬連オッズ
Uozz = Val(Mid(馬Data(uma1), 6 * (uma2 - 1) + 1, 6)) / 10
Ozz(n, 4) = Format(Uozz, "#,0")
Next uma2, uma1
No.1の方のお礼と補足欄に書いたようにお願いしているんですが、上のプログラムをそのままVBAのEditorにコピー&ペーストしても動きませんよね?それに出来上がりイメージのようになるのかな~。"*"(アスタリスク:出走取り消し馬の取り扱いもされてないみたいだし・・・。申し訳ないけどプログラミングの知識が超初級なのでこのコーナーでお願いした次第です。すみません。
No.2
- 回答日時:
こんばんは。
九天社に以下のような本がありますから、参考にしてみたらいかがですか?
Excel VBAで自分で作る
『DIY 競馬プログラミング』
私などは、まったく分かりませんし、単発のデータだけでは、無理だと思いますから。
参考URL:http://www.9-ten.co.jp/list/key_keiba.php
No.1
- 回答日時:
最後までお付き合い出来るか解りませんが、、、
ご質問を読んでいくつか疑問が出ました。
元データは固定長とありますが、同じレースの枠番データなら同じ長さなのでしょうか?
これが1枠のデータなら、
01:------000151000055000234000524000036000235
2枠のデータはこう?
02:000151------000344000012000988000123000036
あと、枠連データと馬連データは別々に取得するのでしょうか?
もう少しサンプルデータや完成形のイメージがわく説明があると理解されやすいかも。
この回答への補足
下の補足です。質問に書いたもの
A列に枠連の番号(若い番号順に1-1、1-2、・・・)
B列にその枠連のオッズ
C列に対応する馬連の番号(先ほどの例で言えば馬連(1)-(13)は18頭立てなら枠連1-7に、13頭立てなら枠連1-8に含まれる)
D列にその馬連のオッズ
A列の枠連の番号に関していえば、当然出走頭数により存在しないものが出てくる(例:13頭立てのときの1-1,2-2,3-3いわゆる”ゾロ目”)
の出来上がりのイメージとしては
A(枠連)B(枠連オッズ)C(馬連)D(馬連オッズ)
1-2 5.2 1-2 6.8
1-3 12.6 1-3 15.9
1-3 12.6 1-4 30.8
1-4 8.9 1-5 9.8
1-4 8.9 1-6 15.7
1-5 35.9 1-7 46.8
1-5 35.9 1-8 98.9
・
・
・
です。よろしくお願いします。
まさにおっしゃるとおりで、同じレースの枠番データなら同じ長さです。すなわち
01:------000151000055000234000524000036000235000324
02:000151------000344000012000988000123000036000555
03:000055000344------000654000789000256000258000156
04:000234000012000654------000625000369000147000056
05:000524000988000789000625------000654000789000321
06:000036000123000256000369000654------000951000753
07:000235000036000258000147000789000951------000684
08:000324000555000156000056000321000753000684------
という様にA列の26行目から34行目までに固定長文字列で並んでいます。
馬連も同様の並びで38行目から55行目まで(すなわち18頭分すべて)並んでいます。17頭立てのときは
18:------------------------------------------------------------------------------------------------------------という風に記載されています。
ちなみに出走取り消し馬の馬番のところは******になります。
今ちょっと時間がないので、貼り付けイメージは後で記入させていただきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 競馬 日本ダービー・東京優駿 人気になりそうな二頭が⑦枠と⑧枠に決まりましたね♪ 府中の2400mなので馬 1 2022/05/26 17:55
- その他(パソコン・スマホ・電化製品) エクセルで連番印刷したいのですが、 フォームは1枚4枠です。 100番まで連番を着けるとして、1枚目 4 2022/12/30 12:55
- 競馬 じゃいさんの9370万的中、幾らの掛け金? 2 2022/11/04 11:31
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- 電気工事士 第二種電気工事士における連用取付枠について 1 2023/07/23 13:52
- 競馬 競馬で 3連単ではなく、番号3つ選んで、選んだ馬が何着でも、当たりみたいなのあるんでしょうか?あるな 2 2023/01/08 14:14
- 競馬 競馬の実況 1 2023/02/24 11:28
- Excel(エクセル) Excelマクロ 同列内で複数の数式を繰り返す方法 5 2022/05/22 13:58
- 事務・総務 郵便払込取扱票への記入揺れ 1 2022/03/26 22:54
- フリーソフト フォルダ、ファイル名の一括変換について 3 2023/03/16 09:23
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
教えて下さい
-
配列でデータが入っている要素...
-
【エクセル】測定時間がバラバ...
-
30Gも使えるはずなのに全然ネッ...
-
Excelのマクロでワードのテキス...
-
メモ帳(テキストデータ)をExc...
-
S9タイプからXタイプにデータ...
-
シーケンサにパソコンからアク...
-
この行は既に別のテーブルに属...
-
プログラミング python pandas ...
-
0が含まれる幾何平均が「#NUM!」
-
VBA 空白セルを削除ではない方...
-
【Excel】リストボックスにデー...
-
VBにおいてフォーム間の変数の...
-
VBAを使ってOutlookメール本文...
-
Fortran カンマを含む数値デー...
-
C# でDataTableの更新を高速化...
-
PDOオブジェクトは使い回し可能?
-
ACCESSからEXCELに出力する際、...
-
ActiveReportについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
教えて下さい
-
【エクセル】測定時間がバラバ...
-
配列でデータが入っている要素...
-
多量のSUMIF式を軽くしたい
-
エクセルで2つの時系列のデー...
-
Excelのマクロでワードのテキス...
-
メモ帳(テキストデータ)をExc...
-
VBA 空白セルを削除ではない方...
-
VBAを使ってOutlookメール本文...
-
Accessで該当データにフラグを...
-
合計3TBのデータのハッシュ値を...
-
シーケンサにパソコンからアク...
-
S9タイプからXタイプにデータ...
-
カンマからスラッシュに
-
VBAでシートからコンボボックス...
-
VBA 毎日取得するデータを順番...
-
ビットシフトについて
-
ユーザーフォームのテキストボ...
-
EXCELVBAでSQLserverからデータ...
-
特定のデータの抽出方法を教え...
おすすめ情報