[[20210118174756]] 『ここって』(ヒロユキ) >>BOT

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『ここって』(ヒロユキ)

いつもお世話になっております
ここってグーグルのスプレッドシートのURL載せても大丈夫でしょうか
文章で説明しにくい内容なのでどうしたものかと悩んでいます

< 使用 Excel:unknown、使用 OS:Windows7 >


 セキュリティの関係上、リンクを閲覧することを避ける回答者もいらっしゃいます。

 リンクを張るのは自由ですが、回答者がリンク先を見るかどうかも
 自由です。

 ↓はここの注意書きです。

 初めての方へ
http://www.excel.studio-kazu.jp/wiki/excelboard/

 >5) Wikiに書き込む場合の整形ルール
 •http://www.hyuki.com/ のようなURLは自動的にリンクになります
(通りすがり) 2021/01/18(月) 18:07

ありがとうございます 
複雑な内容で説明しにくいので悩んでいます
(ヒロユキ) 2021/01/18(月) 18:22

つたない文章での説明で良ければ書きたいと思いますが
(ヒロユキ) 2021/01/18(月) 20:25

>書きたいと思いますが
かかなくていいよ。迷惑。
(悪) 2021/01/18(月) 20:44

 >悪

 解決につながらない書き込みの方がよっぽど迷惑だ。

 >ヒロユキさん

 気にしないで書き込んでください。
(通りすがり) 2021/01/18(月) 20:49

通りすがりさんありがとうございます
では
ウェブサイトからコピペではりつけた状態の
1R
3歳未勝利
10:10 ダ1200m 16頭

2R
3歳未勝利
10:40 ダ1800m 16頭
以下続く
の状態のものを
べつのシートにて
1R 3歳未勝利 10:10 ダ1200m 16頭
2R 3歳未勝利 10:40 ダ1800m 16頭
みたいにしたいです
ただし
開催レース一覧 重賞スケジュール 今週のレース一覧へ PDF競馬新聞
より下のセルを対象にしたいです
わかりにくくてすいませんがよろしくお願いします
(ヒロユキ) 2021/01/18(月) 21:41


ここはお馬さんモードの方が何人かいらっしゃいます
のでその方々が見られたら一発なんたろうけど。

ウエブクエリではなくコピペですか。
今スマホからですのでデータの区切りかをスペースな
のかタブなのか分かりませんので、次のレスは明日パソ
コンから見てになります。
(通りすがり) 2021/01/18(月) 22:46


>ウェブサイト
どこのサイトですか?
そのurlを示すことはできないのですか?(公開されているWebサイトなんでしょ?)

(γ) 2021/01/19(火) 00:12


yさん
ありがとうございます
https://race.netkeiba.com/top/?rf=navi
です
試しに1月17日の項目を押していただければ
ありがたいです
(ヒロユキ) 2021/01/19(火) 16:48

 試しに1/17 1回 中京 6日目の部分をWEB上でコピーし一旦テキストエディタ(今回は
 windows添付のメモ帳)に貼り付けた後テキストエディタをコピーし余計な色情報とか
 をクリアし、シートのA1に貼り付けたら、

 A2に「1R」
 A5に「3歳未勝利」
 A7に[「10:01  ダ1200m 16頭 」

 と貼り付きました。

 別のシートのA1に
=INDIRECT("Sheet1!A"&(ROW()*8)-6)&" "&INDIRECT("Sheet1!A"&(ROW()*8)-6+3)&" "&INDIRECT("Sheet1!A"&(ROW()*8)-6+5)

 とし、後は必要なだけ式を下方向へコピーで行けました。

 WEBクエリでざっと試しても、コピペの場合と同じ様なデータになりました。

 中京競馬場だけで試しましたが、全競馬場分必要な場合は応用で行けると思いますので
 試してみてください。
(通りすがり) 2021/01/19(火) 19:19

通りすがりさんありがとうございます
ちなみにこれって関数ではなくマクロでできませんか
最初に書いておけばよかったので その点はすいません
理由としては これって試しに1日分なので 年間に直すと どれくらいの量になる
かわからなくて
作業的には
サイトをコピペ→マクロで作業(ここまでで構いません)→蓄積用シートにコピペ
をかんがえています
色々とすいませんがよろしくお願いします
(ヒロユキ) 2021/01/19(火) 19:51

 マクロで行う理由は?
 どこまでご自分で出来てますか?
(通りすがり) 2021/01/19(火) 20:02

 マクロで行うとしても、考え方は関数で行うのとさほど
 変わらないと思いますよ?
(通りすがり) 2021/01/19(火) 20:03

 参考過去ログです。

[[20180129082743]] 『VBAを練習するには』(掛け時計)
(通りすがり) 2021/01/19(火) 20:09


頑張ってやってみます 
できたらまたコードとともに書き込みます
(ヒロユキ) 2021/01/19(火) 20:19

作ってみました
Sub テスト()
'
' Macro4 Macro
Dim max_row As Long
Dim min_row As Long
'開始行と最終行の行番号取得
min_row = Worksheets("マクロ処理前").UsedRange.Row
max_row = Worksheets("マクロ処理前").UsedRange.Rows.Count - min_row - 1
  Application.ScreenUpdating = False
Dim cnt As Long
Dim r As Long
Dim レース番号 As Variant
Dim レース名 As Variant
Dim 時刻 As Variant
Dim shp As Shape
cnt = 1

    For r = min_row To max_row

 If Worksheets("マクロ処理前").Cells(r, 1).Value Like "*R" Then
'データ取得

レース番号 = Worksheets("マクロ処理前").Cells(r, 1).Value
レース名 = Worksheets("マクロ処理前").Cells(r + 1, 1).Value
時刻 = Worksheets("マクロ処理前").Cells(r + 2, 1).Value
'データマクロ処理後

Worksheets("マクロ処理後").Cells(cnt, 3).Value = レース番号
Worksheets("マクロ処理後").Cells(cnt, 4).Value = レース名
Worksheets("マクロ処理後").Cells(cnt, 5).Value = 時刻
cnt = cnt + 1

End If

Next r

      Application.ScreenUpdating = True
End Sub

とりあえずテストをしてみたところ 動きました

(ヒロユキ) 2021/01/19(火) 22:33


 頑張りましたね。
(通りすがり) 2021/01/20(水) 07:33

 >作業的には
 >サイトをコピペ→マクロで作業(ここまでで構いません)→蓄積用シートにコピペ
 >をかんがえています

全部をマクロ化してみては?
(何をどう蓄積するかわからないですが。)

エクセルにはWebからデータを取り込む機能があります。
「Webクエリ」だったり「パワークエリ→Web接続」だったりバージョンによって
名前が違うようですが。

例えば、
ヤフー競馬なら、
https://keiba.yahoo.co.jp/
ここから次週の予定を取り込みます。

	Column1	Column2	Column3
	1月23日土曜日	1回中山7日	初富士ステークス芝・右 1800m 1600万下
	1月23日土曜日	1回中京7日	若駒ステークス(L)芝・左 2000m オープン
	1月23日土曜日	1回小倉3日	小倉城特別ダート・右 1700m 1000万下
	1月24日日曜日	1回中山8日	アメリカジョッキークラブカップ(GII)芝・右・外 2200m オープン
	1月24日日曜日	1回中京8日	東海テレビ杯東海ステークス(GII)ダート・左 1800m オープン
	1月24日日曜日	1回小倉4日	豊前ステークスダート・右 1700m 1600万下

で、

1回中山7日 のレース一覧は、
https://keiba.yahoo.co.jp/race/list/21060107/
たぶんここのアドレスで取得できます。(金曜午後に確定?)
で、このURLアドレスの最後の数字に注目してください。

21060107 の

21 → 西暦2021年
06 → 中京
01 → 1回
07 → 7日

という意味です。

なので、さっき取得した次回レースの
1回中山7日 を 21060107に変換することで、
その日のレース一覧のページのアドレスが作れます。
作ったアドレスで、またWebクエリしたら、欲しいデータが得られるかと
思います。

https://race.netkeiba.com/top/?rf=navi
↑こちらのサイトでは、
ブラウザで見た感じでは、アドレスが変わらないので、
ちょっと素人では手が出しにくいかなと思いました。

同じく馬や騎手にも番号が振られているので、
様々な公開されているデータを抽出し、
オリジナルの馬柱表も作成可能かと思います。

(まっつわん) 2021/01/20(水) 16:23


 二つの日付のURLを比べてみましたが、日によってURLが変わる部分は日付の部分のみのようです。
 WEBからワークシートへのコピペとWEBクエリを比較したら、WEBクエリの方が余計なブランク行が少ない分処理しやすそうです。

 1/17
https://race.netkeiba.com/top/race_list_sub.html?kaisai_date=20210117¤t_group=1020210123#racelist_top_a

 1/23
https://race.netkeiba.com/top/race_list_sub.html?kaisai_date=20210123¤t_group=1020210123#racelist_top_a

 ただ、WEBからワークシートへのコピペにせよ、WEBクエリにせよ、WEBの構成が変わったらその都度コードの見直しは必要になってきます。

 ※余談です。VBAを始めったきっかけが、「自分独自の競馬の馬柱表を自動で作りたい。」だったまっつわんさんが登場されたので非常に心強い
 です。
(通りすがり) 2021/01/20(水) 17:02

まっつわんさん ありがとうございます
 オリジナルの馬柱ですか 考えても見ませんでした できれば教えていただきたいです
 その前に本題の件を解決させていただきたいです 

通りすがりさんありがとうございます 
昨夜書き込んで思ったのですが 
日にちと場名を入れたいなとおもって
まず日にちの部分の取得は昨夜のコードの改良でいいと思うのですが
厄介なのが場名で
1R〜12Rまであって 1Rの6行上に場名があってそれを取得して それを12回(回数は決まってます)くり返して
また1Rの上の場名を取得したいのですが
まだそこまでわからなくて 教えていただきたいです わかりにくければすいません
(ヒロユキ) 2021/01/20(水) 18:01


 まっつわんさんご紹介のHPは、日付と競馬場を指定して特定の日付の特定の競馬場の
 ページを指定できますので、そのページの全レースを取得すればお望みのことと同じ内容
 が取得できると思いますが、それではだめなのでしょうか?
(通りすがり) 2021/01/20(水) 18:20

https://race.netkeiba.com/top/?rf=navi
 に拘るのでしたら、

 WEBクエリを試したら

 「払戻一覧」の2行上が
 「1回 中山 6日目」
 とか
 「1回 中京 6日目」
 だったので、
 「払戻一覧」を探して、その2行上を調べるようにすればいいかと思います。
(通りすがり) 2021/01/20(水) 18:27

それだと 最初の払戻一覧の2行上だけを取得するのではないのでしょうか
(ヒロユキ) 2021/01/20(水) 19:13

だから、findメソッドかループで「払戻一覧」
をあるだけ探してそのセルを基点にすれざいい
のでは?ということです。
皆まで言わないと分からないですかね?
(通りすがり) 2021/01/20(水) 20:18

なるほど でも私ループをしたことがなくてどうすればよろしいでしょうか
(ヒロユキ) 2021/01/20(水) 20:22

最初から勉強しなくてループ文を書ける人など
存在しません。

検索等してみましたか?
VBA関連のサイトで勉強してみましたか?
VBA関連の本は買って勉強しましたか?
(通りすがり) 2021/01/20(水) 22:43


 >でも私ループをしたことがなくてどうすればよろしいでしょうか

 ご自分で書かれたコードにループが含まれてるんですけど。
(通りすがり) 2021/01/20(水) 22:45

わかりましたやってみます
(ヒロユキ) 2021/01/20(水) 22:48

https://race.netkeiba.com/top/race_list_sub.html?kaisai_date=20210117¤t_group=1020210123#racelist_top_a

このアドレスでWebクエリ出来ないんですが、
なんか設定あります?

あと、仕事の合間に書いてるので、おおっぴらに競馬のサイトを開けないんで^^;
過度な期待をされても困ります。
席が部長の目の前で、部長に用がある人がちょいちょい後ろ通るんで(爆

とりあえず、ループのやり方。

http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_for_next.html

(まっつわん) 2021/01/21(木) 08:12


 貼り付ける際にリンクが文字化けしてました。
 失礼しました。

https://race.netkeiba.com/top/race_list_sub.html?kaisai_date=20210117¤t_group=1020210123#racelist_top_a
(通りすがり) 2021/01/21(木) 08:16


 あれ?プレビューではきちんと表示されるんですけど
 投稿したら文字化けしますね。

 貼り付ける際にリンクが文字化けしてました。
 失礼しました。

 ¤t
 の部分を
 & current 
 に修正してください。※「&」と「current」の間のスペース
 は削除してください。つなげると文字化けするようです。 
(通りすがり) 2021/01/21(木) 08:24

色々とありがとうございます
一応作ってみました

Option Explicit
Sub テスト()
'
' Macro4 Macro
Dim max_row As Long
Dim min_row As Long
'開始行と最終行の行番号取得
min_row = Worksheets("マクロ処理前").UsedRange.Row
max_row = Worksheets("マクロ処理前").UsedRange.Rows.Count - min_row - 1

  Application.ScreenUpdating = False
Dim cnt As Long
Dim r As Long
Dim レース番号 As Variant
Dim レース名 As Variant
Dim 時刻 As Variant
Dim 場所 As Variant
Dim shp As Shape
cnt = 1

    For r = min_row To max_row

 If Worksheets("マクロ処理前").Cells(r, 1).Value Like "*R" Then
'データ取得

レース番号 = Worksheets("マクロ処理前").Cells(r, 1).Value
レース名 = Worksheets("マクロ処理前").Cells(r + 1, 1).Value
時刻 = Worksheets("マクロ処理前").Cells(r + 2, 1).Value
'データマクロ処理後

Worksheets("マクロ処理後").Cells(cnt, 3).Value = レース番号
Worksheets("マクロ処理後").Cells(cnt, 4).Value = レース名
Worksheets("マクロ処理後").Cells(cnt, 5).Value = 時刻
cnt = cnt + 1

End If

Next r
For r = min_row To max_row

 If Worksheets("マクロ処理前").Cells(r, 1).Value Like "払戻一覧" Then
'データ取得
場所 = Worksheets("マクロ処理前").Cells(r - 2, 1).Value
'データマクロ処理後

Worksheets("マクロ処理後").Cells(cnt, 2).Value = 場所
cnt = cnt + 1

End If

Next r

      Application.ScreenUpdating = True
End Sub

ですが動かしてみたところ 場名が変な位置に表示されてしまいましたなぜでしょうか

(ヒロユキ) 2021/01/21(木) 18:21


少し勉強してみます

(ヒロユキ) 2021/01/21(木) 22:23


こんばんは
色々と試してみましたがループがうまくいきません
わからなくてすいませんが
よろしくお願いします

(ヒロユキ) 2021/01/22(金) 22:53


 横から失礼。
 各Rの処理をすべて実行して、
 そのあとで、場名処理をしているので、
 そのとおりの順番で出力されているのでは?

  For r = min_row To max_row
       If Worksheets("マクロ処理前").Cells(r, 1).Value Like "*R" Then
            ''ここで 各レースの処理(今のとおりのもの)
       ElseIf Worksheets("マクロ処理前").Cells(r, 1).Value Like "払戻一覧" Then
            ''ここで 場名の処理(今のとおりのもの)
       EndIf
  Next
 とでもすればよいのでは?  

 インデントをきちんと付けた方がいいと思います。人のためでなく、自分のためにも。
(γ) 2021/01/23(土) 09:18

ありがとうございます

Option Explicit
Sub テスト()
'
' Macro4 Macro
Dim max_row As Long
Dim min_row As Long
'開始行と最終行の行番号取得
min_row = Worksheets("マクロ処理前").UsedRange.Row
max_row = Worksheets("マクロ処理前").UsedRange.Rows.Count - min_row - 1

  Application.ScreenUpdating = False
Dim cnt As Long
Dim r As Long
Dim レース番号 As Variant
Dim レース名 As Variant
Dim 時刻 As Variant
Dim 場所 As Variant
Dim shp As Shape
cnt = 1

    For r = min_row To max_row

 If Worksheets("マクロ処理前").Cells(r, 1).Value Like "*R" Then
'データ取得

レース番号 = Worksheets("マクロ処理前").Cells(r, 1).Value
レース名 = Worksheets("マクロ処理前").Cells(r + 1, 1).Value
時刻 = Worksheets("マクロ処理前").Cells(r + 2, 1).Value

 ElseIf Worksheets("マクロ処理前").Cells(r, 1).Value Like "払戻一覧" Then
場所 = Worksheets("マクロ処理前").Cells(r - 2, 1).Value
      'データマクロ処理後

cnt = cnt + 1

End If
Next r
Worksheets("マクロ処理後").Cells(cnt, 2).Value = 場所
Worksheets("マクロ処理後").Cells(cnt, 3).Value = レース番号
Worksheets("マクロ処理後").Cells(cnt, 4).Value = レース名
Worksheets("マクロ処理後").Cells(cnt, 5).Value = 時刻

      Application.ScreenUpdating = True
End Sub
としたところ何故か一つしかでなくてまた色々と試してみます

(ヒロユキ) 2021/01/23(土) 17:33


>ここで 各レースの処理(今のとおりのもの)
>''ここで 場名の処理(今のとおりのもの)
と書きましたが、全然違うものに変えてしまっているじゃないですか。

(γ) 2021/01/23(土) 17:53


どういう意味ですかすいませんよくわからなくて
教えていただきたいです
(ヒロユキ) 2021/01/23(土) 18:10

 ループ処理
 というものを今一度勉強してください。
 ループの中では何も処理がなされてなく、ループ
 を抜けた後にループのカウントを使った処理を書いても
 何の意味もありません。
(通りすがり) 2021/01/23(土) 22:24

 2021/01/21(木) 18:21 のヒロユキさんのコードと
 2021/01/23(土) 17:33 のヒロユキさんのコードを
 見比べてみてください。

 何か違いがありませんか?
(通りすがり) 2021/01/23(土) 22:26

ifが2回ありますね木曜のは少し勉強してみます
(ヒロユキ) 2021/01/23(土) 22:33

 (1)
 あなたが提示されたコードにインデントをきちんとつけるとこうなります。

 Sub テスト()
     Dim max_row As Long
     Dim min_row As Long

     '開始行と最終行の行番号取得
     min_row = Worksheets("マクロ処理前").UsedRange.Row
     max_row = Worksheets("マクロ処理前").UsedRange.Rows.Count - min_row - 1
     Application.ScreenUpdating = False

     Dim cnt As Long
     Dim r As Long
     Dim レース番号 As Variant
     Dim レース名 As Variant
     Dim 時刻 As Variant
     Dim 場所 As Variant
     Dim shp As Shape

     cnt = 1
     For r = min_row To max_row
         If Worksheets("マクロ処理前").Cells(r, 1).Value Like "*R" Then
             レース番号 = Worksheets("マクロ処理前").Cells(r, 1).Value   '処理A
             レース名 = Worksheets("マクロ処理前").Cells(r + 1, 1).Value '処理A
             時刻 = Worksheets("マクロ処理前").Cells(r + 2, 1).Value     '処理A
             Worksheets("マクロ処理後").Cells(cnt, 3).Value = レース番号 '処理A
             Worksheets("マクロ処理後").Cells(cnt, 4).Value = レース名   '処理A
             Worksheets("マクロ処理後").Cells(cnt, 5).Value = 時刻       '処理A
             cnt = cnt + 1                                               '処理A
         End If
     Next r
     For r = min_row To max_row
         If Worksheets("マクロ処理前").Cells(r, 1).Value Like "払戻一覧" Then
             場所 = Worksheets("マクロ処理前").Cells(r - 2, 1).Value     '処理B
             Worksheets("マクロ処理後").Cells(cnt, 2).Value = 場所       '処理B
             cnt = cnt + 1                                               '処理B
         End If
     Next r
     Application.ScreenUpdating = True
 End Sub

 (2)
 処理Aとか処理Bとかで説明上だけの文字列を使って書くと、
 上のコードの大まかな流れは、次のようになります。
     cnt = 1
     For r = min_row To max_row
         If Worksheets("マクロ処理前").Cells(r, 1).Value Like "*R" Then
             処理A(レース情報の転記)
         End If
     Next r
     For r = min_row To max_row
         If Worksheets("マクロ処理前").Cells(r, 1).Value Like "払戻一覧" Then
             処理B(場名情報の転記)
         End If
     Next r
 これは、
 ・まず各行を見ていって、レース情報をすべていったん転記し、
 ・その後、また最初からデータを見ていって、場名情報を転記します。
 いわば二段階処理です。
 だから、最後に場名だけがかたまって出力されます。
 そこが、意図と違うんでしょ?

 (3)
 どうなればよいのか、転記列とか詳細は知りませんが、
 少なくとも現状(最後に場名情報がかたまって転記される)から抜けるには、次のようにします。

 二段階処理ではまずいのだから、下記のように、
 一段階処理で、上から各行を見ていって、レース情報、場名情報を発見したつど、
 それぞれを転記すればよいのでは、と申し上げたのです。

 つまり、おおまかには、
     cnt = 1
     For r = min_row To max_row
         If Worksheets("マクロ処理前").Cells(r, 1).Value Like "*R" Then
             処理A(レース情報の転記)
         ElseIf Worksheets("マクロ処理前").Cells(r, 1).Value Like "払戻一覧" Then
             処理B(場名情報の転記)
         End If
     Next r
 ということです。    
 処理A、処理Bのところは、元のコードのそれらを一切変更することなく、
 そのままコピーペイストすればいいんですよ。
 と書きました。

 (4)
 上記を理解して、コードを書くのはあなたのほうでお願いします。
 (コードを単にもらうだけだと、理解するというプロセスが抜けてしまいます。
 そういう積もりで書きましたが、まったく違う方向に進んでしまい少々驚きました。)

 インデントのことも書いたけど、無視されているのは何故ですか?
 しっかりインデントをつけてください。
 そうすることで、コードの構造が分かり易くなるはずです。
 これはあなたに利益をもたらすことなんです。

 また、コードが想定と違う動きをしたら、
     ステップ実行
 をしてみて下さい。
 一行一行がどういう動作になっているかをよく確認して理解してください。

 コードを書く作業と、コードを確認して必要に応じて修正する作業は、
 どちらも大切な作業です。
 正しいコードを頭から書き下せる人は稀です。
 だれもがなんらかの勘違いで、想定と異なる結果となることは珍しくありません。
 それを修正する作業にも力を入れて取り組んでください。

 私はここまでとさせて下さい。

(γ) 2021/01/24(日) 07:23


修正しました

Option Explicit
Sub テスト()
'
' Macro4 Macro
Dim max_row As Long
Dim min_row As Long
'開始行と最終行の行番号取得
min_row = Worksheets("マクロ処理前").UsedRange.Row
max_row = Worksheets("マクロ処理前").UsedRange.Rows.Count - min_row - 1

  Application.ScreenUpdating = False
Dim cnt As Long
Dim r As Long
Dim レース番号 As Variant
Dim レース名 As Variant
Dim 時刻 As Variant
Dim 場所 As Variant
Dim shp As Shape
cnt = 1

    For r = min_row To max_row

 If Worksheets("マクロ処理前").Cells(r, 1).Value Like "*R" Then
'データ取得

レース番号 = Worksheets("マクロ処理前").Cells(r, 1).Value
レース名 = Worksheets("マクロ処理前").Cells(r + 1, 1).Value
時刻 = Worksheets("マクロ処理前").Cells(r + 2, 1).Value
Worksheets("マクロ処理後").Cells(cnt, 3).Value = レース番号
Worksheets("マクロ処理後").Cells(cnt, 4).Value = レース名
Worksheets("マクロ処理後").Cells(cnt, 5).Value = 時刻
cnt = cnt + 1

 ElseIf Worksheets("マクロ処理前").Cells(r, 1).Value Like "払戻一覧" Then
場所 = Worksheets("マクロ処理前").Cells(r - 2, 1).Value     '処理B
             Worksheets("マクロ処理後").Cells(cnt, 2).Value = 場所       '処理B
             cnt = cnt + 1                                               '処理B
End If
Next r
      Application.ScreenUpdating = True
End Sub

動かしてみたところ
うごくのはうごくのですが
1回 中山 6日目
     1R

           2R
となってしまいます
ではなくて

  1回 中山 6日目 1R

    1回 中山 6日目   2R
というふうにしたいです
もう少し考えてみます
(ヒロユキ) 2021/01/24(日) 19:31

 >Worksheets("マクロ処理後").Cells(cnt, 2).Value = 場所       '処理B

 これの意味が分かっているのなら、自ずと答えは出てくると思います。
(通りすがり) 2021/01/25(月) 19:53

それがよくわからなくて少し頑張ってみます
(ヒロユキ) 2021/01/25(月) 21:20

 変数に格納した文字列を結合するだけだと思います。

 ◯.Value = 変数A & " " & 変数B
(通りすがり) 2021/01/26(火) 17:10

ありがとうございます
以下のように修正しました Sub テスト()
    '
    ' Macro4 Macro
    Dim max_row As Long
    Dim min_row As Long
    '開始行と最終行の行番号取得
    min_row = Worksheets("マクロ処理前").UsedRange.Row
    max_row = Worksheets("マクロ処理前").UsedRange.Rows.Count - min_row - 1
      Application.ScreenUpdating = False
    Dim cnt As Long
    Dim r As Long
    Dim レース番号 As Variant
    Dim レース名 As Variant
    Dim 時刻 As Variant
    Dim 日付 As Variant
    Dim 場所 As Variant
    Dim shp As Shape
    cnt = 1

        For r = min_row To max_row

     If Worksheets("マクロ処理前").Cells(r, 1).Value Like "*R" Then
    'データ取得

    レース番号 = Worksheets("マクロ処理前").Cells(r, 1).Value
    レース名 = Worksheets("マクロ処理前").Cells(r + 1, 1).Value
    時刻 = Worksheets("マクロ処理前").Cells(r + 2, 1).Value
    Worksheets("マクロ処理後").Cells(cnt, 3).Value = レース番号
    Worksheets("マクロ処理後").Cells(cnt, 4).Value = レース名
    Worksheets("マクロ処理後").Cells(cnt, 5).Value = 時刻
    cnt = cnt + 1

     ElseIf Worksheets("マクロ処理前").Cells(r, 1).Value Like "払戻一覧" Then
    場所 = Worksheets("マクロ処理前").Cells(r - 2, 1).Value     '処理B
    日付 = Worksheets("マクロ処理前").Cells(r - 4, 1).Value     '処理B

                 Worksheets("マクロ処理後").Cells(cnt, 2).Value = 場所 & レース番号       '処理B
                  Worksheets("マクロ処理後").Cells(cnt, 1).Value = 日付
                 cnt = cnt + 1                                               '処理B
    End If
    Next r
(ヒロユキ) 2021/01/26(火) 19:37

↑のコードで解決しました
ありがとうございました
(ヒロユキ) 2021/01/28(木) 20:27

コメント返信:

[ 一覧(最新更新順) ]


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