[[20190114213127]] 『競馬の出馬表処理 サンプルファイル付き』(ひろ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『競馬の出馬表処理 サンプルファイル付き』(ひろ)

いつもお世話になっております
今度競馬の出馬表をマクロで処理しようと考えていて ネットの出馬表をコピペして
処理しようと考えています
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


ありがとうございます
動き的にも質問の回答もあっています 動的配列調べてみますが うまくできるかわかりませんまた連絡します
(ひろ) 2019/01/15(火) 18:21

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.