次のコードは、c = 2
の場合にのみ機能しますが、他の値でも動作させたいと考えています。以下は、私がそれを実行したいExcelテーブルです。ExcelのネストされたForループVBA
Date PickupCost StorageCost DeliveryCost
1/1/2017 140 35 0
1/8/2017 80 20 0
1/10/2017 0 0 149
1/30/2017 35 8 0
私が行方不明、各日付のデータを記入したいが、3列目(StorageCost
)でのみ値が前日のStorageCost
値などの他の欠落日付値で同じにする必要があります。
Dim j, p, w, c As Long
Dim date1, date2 As Date
j = Cells(Rows.Count, 1).End(xlUp).Row
w = 2
For c = w To j
date1 = Range("A" & w).Value
date2 = Range("A" & (w + 1)).Value
p = DateDiff("d", date1, date2)
For w = 2 To p
Range("A" & (c + 1)).EntireRow.Insert
ActiveSheet.Cells(c + 1, 1).Value = (ActiveSheet.Cells(c, 1).Value) + 1
ActiveSheet.Cells(c + 1, 2).Value = 0
ActiveSheet.Cells(c + 1, 3).Value = ActiveSheet.Cells(c, 3).Value
ActiveSheet.Cells(c + 1, 4).Value = 0
c = c + 1
Next w
w = w + 1
ActiveSheet.Range("A1").Select
j = Cells(Rows.Count, 1).End(xlUp).Row
Next c
何cがすることになっており、どこでそれを初期化していますか? –
cは、行の日付と前の行の日付の各組み合わせの間のギャップを計算する必要があるため、ループの実行回数を基にしたカウンタです。 wの値に基づいて初期化されます。 –
あなたが良くしようとしていることを説明してください - 分かりません。 「データが欠落していますか」という値は0ですか?あなたが望む結果の例を投稿できますか? – user1274820