マクロを使用して下記繰り返し作業を自動化することを考えています。
例えば①の場合2010/6,2020/7/,2020/8,2020/9の様に契約日~解約日まで1が月ごとに'別シート1'に契約レコード自動作成
②の場合も同様に契約日~今日まで1カ月ごとに'別シート2'に契約レコード自動作成を繰り返す
マクロをほぼ使ったことがなく上記設定可能なのか、マクロの使い方について教えていただけないでしょうか。
コピー&ペーストは可能かと思いますが、条件を指定して上記の様な操作が可能なのかいろいろググって試行錯誤してみたものの、情報が出てこなかったためご質問させてください。
どうぞよろしくお願いいたします。
<追記>
皆さま迅速なご返信ありがとうございます。
頂いた同じシートに書き出す場合のVBAを参考にして追加要件をVBAに付け加えさせていただきましたが一部、想定道理の挙動をしない為、アドバイスいただけると助かります。
’契約件数’を1,2の様な数値で取得したいのですが結果を確認した所’1900/1/1’といった日付形式で値が出力されてしまいします。恐らく下記箇所が問題化と思うのですが、修正方法についてご教示いただけますと幸いです。
問題箇所:saki.Cells(outRow, 3) = moto.Cells(i, 3)
試してみたもの:saki.Cells(outRow, 3) = moto.Cells(3),saki.Cells(3) = moto.Cells(3)
どうぞよろしくお願いいたします。
VBA
1Sub Sample2() 2 Dim moto As Worksheet 3 Dim lastRow, i 4 Set moto = Sheets("元シート") 5 lastRow = moto.Cells(Rows.Count, 2).End(xlUp).Row 6 Dim saki As Worksheet, outRow As Long 7 Set saki = Sheets.Add(, moto) 8 moto.Range("A1:AB1").Copy saki.Range("A1:AB1") 9 outRow = 2 10 For i = 2 To lastRow 11 Dim startDate As Date 12 Dim endDate As Date 13 Dim repeatCount As Long 14 startDate = moto.Cells(i, 4) 15 If IsEmpty(moto.Cells(i, 5)) Then 16 endDate = Date 17 Else 18 endDate = moto.Cells(i, 2) 19 End If 20 repeatCount = DateDiff("m", startDate, endDate) 21 Dim j As Long 22 For j = 0 To repeatCount 23 saki.Cells(outRow, 1) = DateAdd("m", j, moto.Cells(i, 1)) 24 saki.Cells(outRow, 2) = moto.Cells(i, 2) 25 saki.Cells(outRow, 3) = moto.Cells(i, 3) 26 saki.Cells(outRow, 4) = moto.Cells(i, 4) 27 saki.Cells(outRow, 5) = moto.Cells(i, 5) 28 saki.Cells(outRow, 6) = moto.Cells(i, 6) 29 saki.Cells(outRow, 7) = moto.Cells(i, 7) 30 saki.Cells(outRow, 8) = moto.Cells(i, 8) 31 saki.Cells(outRow, 9) = moto.Cells(i, 9) 32 saki.Cells(outRow, 10) = moto.Cells(i, 10) 33 saki.Cells(outRow, 11) = moto.Cells(i, 11) 34 saki.Cells(outRow, 12) = moto.Cells(i, 12) 35 saki.Cells(outRow, 13) = moto.Cells(i, 13) 36 saki.Cells(outRow, 14) = moto.Cells(i, 14) 37 saki.Cells(outRow, 15) = moto.Cells(i, 15) 38 saki.Cells(outRow, 16) = moto.Cells(i, 16) 39 saki.Cells(outRow, 17) = moto.Cells(i, 17) 40 saki.Cells(outRow, 18) = moto.Cells(i, 18) 41 saki.Cells(outRow, 19) = moto.Cells(i, 19) 42 saki.Cells(outRow, 20) = moto.Cells(i, 20) 43 saki.Cells(outRow, 21) = moto.Cells(i, 21) 44 saki.Cells(outRow, 22) = moto.Cells(i, 22) 45 saki.Cells(outRow, 23) = moto.Cells(i, 23) 46 outRow = outRow + 1 47 Next 48 Next 49 With saki.UsedRange 50 .NumberFormatLocal = "yyyy/m/d" 51 .EntireColumn.AutoFit 52 End With 53End Sub
回答1件
あなたの回答
tips
プレビュー