2016-07-13 19 views
0

毎月のスプレッドシートがあり、週末の日付を除いて、毎月294行あります。私がしたいのは、各金曜日の行の範囲をコピーし、毎週欠落している土曜日と日曜日のデータをコピーして貼り付けることができるようにすることです。私は欠けている日付を見つけ、それらの日付の行を挿入するマクロを見つけましたが、日付を変更しながらセルの範囲をコピーする方法はわかりません。セルの範囲をコピーして新しい日付の行を挿入できるマクロを構築するにはどうすればよいですか?

これは、欠落している行を追加する別のトピックで見つかったマクロです。この1の前に

wks.Rows(I - 1).Copy 

Sub insertMissingDate() 
Dim wks As Worksheet 
Set wks = Worksheets("Sheet1") 

Dim lastRow As Long 
lastRow = wks.Range("C2").End(xlDown).Row 

'Work bottom up since we are inserting new rows 
For I = lastRow To 3 Step -1 
    curcell = wks.Cells(I, 3).Value 
    prevcell = wks.Cells(I - 1, 3).Value 

    'Using a loop here allows us to bridge a gap of multiple missing dates 
    Do Until curcell - 1 = prevcell Or curcell = prevcell 
     'Insert new row 
     wks.Rows(I).Insert x1ShiftDown 

     'Insert missing date into new row 
     curcell = wks.Cells(I + 1, 3) - 1 
     wks.Cells(I, 3).Value = curcell 
    Loop 
Next I 
End Sub 

答えて

1

この行を追加します(コメントに基づいて)

wks.Rows(I).Insert xlShiftDown 

アップデートを

Sub AddDataWeekends() 

    Dim lRow As Long 
    lRow = Range("A" & Rows.Count).End(xlUp).Row 

    Dim x As Long 

    For x = lRow To 2 Step -294 

     If Weekday(Cells(x, 1), vbSunday) = 6 Then 
      Cells(x, 1).EntireRow.Copy 
      Cells(x, 1).Resize(294 * 2).Insert xlShiftDown 
      Cells(x + 1, 1).Resize(294).Value = Cells(x, 1) + 1 
      Cells(x + 1, 1).Offset(294).Resize(294).Value = Cells(x, 1) + 2 
     End If 

    Next 

End Sub 
+0

感謝を入力するために、それが見えます唯一のもののように左は、ある範囲のセルをコピーし、ただ1つのセルの代わりに挿入する方法を理解することです。 – koch11

+0

@ koch11 - これは行全体をコピーしますが、行の特定の列だけが必要ですか?もしそうなら、どちらのもの? –

+0

スプレッドシートの各日付には294行のデータがあります。私がしようとしていることは、金曜日の日付の294をすべてコピーし、土曜日と日曜日にそれらを挿入することです。最終結果は、金曜日のデータと一致する土曜日は294行、日曜日は294行になります。現在、マクロは金曜日の294行のうち1行をコピーし、土曜日と日曜日の日付を含む1行を挿入します。 – koch11

関連する問題