Предполагая, что ячейка данных начинается с цифры, а ячейка заголовка - нет, это должно сработать. Он переходит от активной ячейки вниз, пока не найдет записанные ячейки.
Sub repeatHeadings()
Dim header As String
While ActiveCell.FormulaR1C1 <> ""
If IsNumeric(Left(ActiveCell.FormulaR1C1, 1)) Then
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
ActiveCell.FormulaR1C1 = header
Else
header = ActiveCell.FormulaR1C1
End If
ActiveCell.Offset(2, 0).Select
Wend
End Sub