Option Explicit
Public Sub ParseOutDates()
Dim r As Range
Set r = Sheet1.UsedRange
Dim row As Range
Dim first As Boolean
first = True
For Each row In r.Rows
If Not first Then
If Trim(row.Cells(1, 1).Text) = "" Then Exit For
If Trim(row.Cells(1, 2).Text) = "" Then Exit For
If Trim(row.Cells(1, 3).Text) = "" Then Exit For
Dim date1 As Date
Dim date2 As Date
Dim reason As String
date1 = row.Cells(1, 1)
date2 = row.Cells(1, 2)
reason = row.Cells(1, 3)
Dim i As Long
Dim j As Long
For i = 4 To r.Columns.Count
If Trim(r.Cells(1, i).Text) = "" Then Exit For
Dim dateI As Date
dateI = r.Cells(1, i)
If dateI > date2 Then Exit For
If dateI >= date1 And dateI <= date2 Then
row.Cells(1, i).Value = row.Cells(j + 1, 3).Value
End If
Next
End If
first = False
Next
End Sub