[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『競馬の出馬表処理 サンプルファイル付き』(ひろ)
いつもお世話になっております
今度競馬の出馬表をマクロで処理しようと考えていて ネットの出馬表をコピペして
処理しようと考えています
Option Explicit
Sub レース2018()
Dim max_row As Long
Dim min_row As Long
'開始行と最終行の行番号取得
min_row = Worksheets("処理前").UsedRange.Row
max_row = Worksheets("処理前").UsedRange.Rows.Count - min_row - 1
Dim cnt As Long
Dim r As Long
Dim レース番号 As Variant
Dim レース名 As Variant
Dim 場 As Variant
Dim 馬番 As Variant
Dim 馬名1 As Variant
cnt = 1
For r = min_row To max_row
'レース番号のあるセルを見つけたら処理実行
If Worksheets("処理前").Cells(r, 1).Value Like "出馬表" Then
'データ取得
レース番号 = Worksheets("処理前").Cells(r - 9, 1).Value
レース名 = Worksheets("処理前").Cells(r - 7, 2).Value
場 = Worksheets("処理前").Cells(r - 9, 2).Value
'変更
馬番 = Worksheets("処理前").Cells(r + 18, 1).Value
馬名1 = Worksheets("処理前").Cells(r + 18, 3).Value
'データ書き出し
Worksheets("処理後").Cells(cnt, 3).Value = レース番号
Worksheets("処理後").Cells(cnt, 2).Value = レース名
Worksheets("処理後").Cells(cnt, 1).Value = 場
Worksheets("処理後").Cells(cnt, 4).Value = 馬番
Worksheets("処理後").Cells(cnt, 5).Value = 馬名1
cnt = cnt + 1
End If
Next r
Sheets("処理後").Select End Sub というふうに 一応コードはできましたが問題があり 1 5頭立て〜18頭立てまで変動するので それをどうするかで悩んでいます 馬番 = Worksheets("処理前").Cells(r + 18, 1).Value 馬名1 = Worksheets("処理前").Cells(r + 18, 3).Value を繰り返してもいいのですが とりあえずわかりにくいので ファイルもつけておきます https://drive.google.com/open?id=1e_dJXJaNBH54p2oqBE4E2xByVf5LfDUq よろしくおねがいします
< 使用 Excel:Excel2010、使用 OS:Windows7 >
Sub レース2018改()
Dim r As Long Dim レース番号 As Variant, レース名 As Variant, 場 As Variant, 馬番 As Variant, 馬名1 As Variant Dim cnt As Long
With Worksheets("処理前")
cnt = 1
For r = .UsedRange.Cells(1).Row To .UsedRange.Cells(.UsedRange.Cells.Count).Row 'レース番号のあるセルを見つけたら処理実行 If .Cells(r, 1).Value Like "出馬表" Then
'データ取得 レース番号 = .Cells(r - 9, 1).Value レース名 = .Cells(r - 7, 2).Value 場 = .Cells(r - 9, 2).Value
'変更 馬番 = .Cells(r + 18, 1).Value 馬名1 = .Cells(r + 18, 3).Value
'データ書き出し Worksheets("処理後").Cells(cnt, 1).Resize(, 5).Value = Array(場, レース名, レース番号, 馬番, 馬名1)
cnt = cnt + 1 End If Next r
Sheets("処理後").Select End With End Sub
>1 5頭立て〜18頭立てまで変動するので それをどうするかで悩んでいます
>馬番 = Worksheets("処理前").Cells(r + 18, 1).Value
>馬名1 = Worksheets("処理前").Cells(r + 18, 3).Value
質問のほうは↑から推測するに、「馬番」「馬名」の数が変動するのでどうしたらいいかを悩んでいるようにも思えるので、推測が合っていたら、「動的配列」というキーワードでネット検索するとよいかもしれません。
セキュリティの観点から、ファイルをみてないので的を外していたらごめんなさい
(もこな2) 2019/01/15(火) 13:15
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.