2016-03-10 41 views
0

我有一段代码可以在我的开始(J2)和结束日期(K2)之间创建缺失的日期。我有一个约6000人的开始和结束日期的列表,并希望重复每行的代码。试图创建一个循环找到缺失的日期

有谁知道我可以循环这个吗?

Sub FindMissingDates() 

Dim FirstDate As Date 
Dim LastDate As Date 
Dim NextDate As Date 
Dim DateOffset As Range 
Dim DateIter As Date 

FirstDate = Range("J2").Value 
LastDate = Range("K2").Value 
Set DateOffset = Range("M2") 

For DateIter = FirstDate To LastDate 
    DateOffset.Value = DateIter 
    Set DateOffset = DateOffset.Offset(0, 1) 
Next DateIter 

End Sub 

回答

1

假设你的名字的名单在列JK的开始和结束日期,然后迅速改变了代码类似下面,应该做的伎俩

Sub FindMissingDates() 
    Dim r As Long 
    Dim FirstDate As Date 
    Dim LastDate As Date 
    Dim NextDate As Date 
    Dim DateOffset As Range 
    Dim DateIter As Date 

    For r = 2 To ActiveSheet.Cells(Rows.Count, "J").End(xlUp).Row '<~~ Loop each row 
     FirstDate = ActiveSheet.Cells(r, "J").Value 
     LastDate = ActiveSheet.Cells(r, "K").Value 
     Set DateOffset = ActiveSheet.Cells(r, "M") 

     For DateIter = FirstDate To LastDate 
      DateOffset.Value = DateIter 
      Set DateOffset = DateOffset.Offset(0, 1) 
     Next DateIter 
    Next r 

End Sub 
+0

是的,这工作完美,谢谢! – JBlack

0

你可以添加另一个For循环。

Dim sht As Wokrsheet 
Dim LastRow As Integer 
Dim FirstDate As Date 
Dim LastDate As Date 
Dim NextDate As Date 
Dim DateOffset As Range 
Dim DateIter As Date 
Dim i As Integer 

Set sht = ThisWorkbook.Worksheets("Name of your sheet") 
LastRow = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row 

FirstDate = Range("J2").Value 
LastDate = Range("K2").Value 
Set DateOffset = Range("M2") 

For i = First row of data To LastRow - 1 
    For DateIter = FirstDate To LastDate 
     DateOffset.Value = DateIter 
     Set DateOffset = DateOffset.Offset(i, 1) 
    Next DateIter 
Next i 

看看这是否适合你?