Довольно многословно, но работает ... Я точно знаю, что есть более эффективные способы сделать это, но здесь вы идете
Sub sorter()
Dim row As Long: row = 2
Dim lastRow As Long
Dim yearList As Variant
Dim year As Variant
Dim extra As Integer: extra = 0
Dim numYears As Integer
With ThisWorkbook.Worksheets("your sheet name")
lastRow = .Cells(.Rows.Count, "A").End(xlUp).row
Do While True
yearList = Split(CStr(.Range("C" & row)), "|")
numYears = UBound(yearList) - LBound(yearList) + 1
If numYears > 1 Then
For Each year In yearList
.Cells(row + extra, 1).Value = .Cells(row, 1).Value
.Cells(row + extra, 2).Value = .Cells(row, 2).Value
.Cells(row + extra, 3).Value = year
' for cols D-F
.Cells(row + extra, 4).Value = .Cells(row, 4).Value
.Cells(row + extra, 5).Value = .Cells(row, 5).Value
.Cells(row + extra, 6).Value = .Cells(row, 6).Value
If extra = numYears - 1 Then Exit For
.Cells(row + extra + 1, 1).EntireRow.Insert
extra = extra + 1
Next year
extra = 0
End If
row = row + 1
If Len(CStr(.Range("A" & row))) = 0 Then Exit Do
Loop
End With
End Sub