startとgoalのAセルの日付データを比較し、goalにないデータを start から行ごとコピペするプログラムを考えています。
こちら以前質問した続きです。
前回質問URLです。https://teratail.com/questions/8x4hz58p7q8s21
コードは以下です。アドバイスをいただき、修正しています。
vba
1Sub compare_and_copy_date() 2 3 Dim L As Long, lRow As Long, M As Long, mRow As Long 4 Dim wsStart As Worksheet: Set wsStart = ThisWorkbook.Sheets("start") 5 Dim wsGoal As Worksheet: Set wsGoal = ThisWorkbook.Sheets("goal") 6 7 8 lRow = wsStart.Cells(Rows.Count, "A").End(xlUp).Row 9 mRow = wsGoal.Cells(Rows.Count, "A").End(xlUp).Row 10 11 For L = 2 To lRow 12 For M = 2 To mRow 13 If wsStart.Cells(L, 1).Value = wsGoal.Cells(M, 1).Value Then 14 Exit For 15 End If 16 Next M 17 If M > mRow Then Rows().Copy '1 18 Next L 19 20End Sub
したいことイメージ
元データ(start)
日付 | 数値データ | 数値データ |
---|---|---|
11/26 | 1234 | 4567 |
11/27 | 1234 | 4567 |
11/28 | 1234 | 4567 |
コピペ先データ(goal)
日付 | 数値データ | 数値データ |
---|---|---|
11/26 | 1234 | 4567 |
11/27 | 1234 | 4567 |
コピペ先データ(コピペ後)
日付 | 数値データ | 数値データ |
---|---|---|
11/26 | 1234 | 4567 |
11/27 | 1234 | 4567 |
11/28 | 1234 | 4567 |
問題点
コメントアウト1の部分で出力した行すべてを取り出してコピペしようとしているのですが、FOR文で出力されるものは最新のものだけなので、すべての出力した行すべてを選択することができません。
すべてを取得するためには、再度FOR文を回す必要があるのでしょうか?
それともほかに方法はありますでしょうか?
教えていただけますと幸いです。よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー