Вы можете попробовать это:
Dim StartRow As Byte
Dim LastRow As Long
Dim i As Integer
Dim ii As Integer
Dim cnt As Integer
Dim limitCol As Integer
StartRow = 3
LastRow = Range("B3").CurrentRegion.Rows.Count - 1
For i = StartRow To LastRow
If (CInt(Range("B" & i)) = 1) Then
cnt = Range("C" & i).Value
limitCol = cnt + 6
For ii = 7 To limitCol
Cells(i, ii) = Range("D" & i).Value
Next ii
End If
Next i