Если вы используете две таблицы и используете Sheet1 в качестве источника и Sheet2 в качестве места назначения, то с помощью вложенного цикла For выполните то, что вы ожидаете:
Sub Process_Dates()
Dim wsSource As Worksheet: Set wsSource = ThisWorkbook.Worksheets("Sheet1")
Dim wsDestination As Worksheet: Set wsDestination = ThisWorkbook.Worksheets("Sheet2")
'declare and set the worksheets you are working with, amend as required
LastRow = wsSource.Cells(wsSource.Rows.Count, "A").End(xlUp).Row
'get the last row with data on Column A, from Source worksheet
For i = 2 To LastRow
strName = wsSource.Cells(i, "A").Value
StartD = wsSource.Cells(i, "B").Value
EndD = wsSource.Cells(i, "C").Value
xDays = DateDiff("d", StartD, EndD)
'get the number of days between Start Date and End Date
For x = 0 To xDays
'loop through the number of days between Start and End
NextRow = wsDestination.Cells(wsDestination.Rows.Count, "A").End(xlUp).Offset(1, 0).Row
'get the next available row on Destination worksheet
wsDestination.Cells(NextRow, 1).Value = strName
wsDestination.Cells(NextRow, 2).Value = DateAdd("d", x, StartD)
Next x
Next i
End Sub
UPDATE:
Если вместо перемещения данных в другой лист вам нужно вставить строки в тот же лист, то следующий результат даст желаемый результат:
Sub Process_Dates()
Dim ws As Worksheet: Set ws = ThisWorkbook.Worksheets("Sheet1")
'declare and set the worksheet you are working with, amend as required
LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
'get the last row with data on Column A
i = 2
'set variable to iterate through rows starting with Row 2
While i <= LastRow
strName = ws.Cells(i, "A").Value
StartD = ws.Cells(i, "B").Value
EndD = ws.Cells(i, "C").Value
xDays = DateDiff("d", StartD, EndD)
'get the number of days between Start Date and End Date
For x = 1 To xDays
'loop through the number of days between Start and End
ws.Rows(i + x).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
'get the next available row on Destination worksheet
ws.Cells(i + x, 1).Value = strName
ws.Cells(i + x, 2).Value = DateAdd("d", x, StartD)
LastRow = LastRow + 1
'increment LastRow as new row has been inserted
Next x
i = (i + xDays) + 1
'increment the i variable to go to the next row to split
Wend
End Sub