Я бы сделал это с помощью VBa
Sub Pirates()
Range("F:I").Cells.Clear
'first, copy the headers
Range("F1").Value = Range("A1").Value
Range("G1").Value = Range("B1").Value
Range("H1").Value = Range("C1").Value
Range("I1").Value = Range("D1").Value
'now, to work out the content
Dim row As Integer
row = 2
Dim resultRow As Integer
resultRow = 2
Dim previousName As String
previousName = Range("A" & row).Value
Do While (Range("A" & row).Value <> "")
Dim currentName As String
currentName = Range("A" & row).Value
If (currentName <> previousName) Then
resultRow = resultRow + 1
previousName = currentName
End If
If Range("A" & row).Value <> "" Then
Range("F" & resultRow).Value = Range("A" & row).Value
End If
If Range("B" & row).Value <> "" Then
Range("G" & resultRow).Value = Range("B" & row).Value
End If
If Range("C" & row).Value <> "" Then
Range("H" & resultRow).Value = Range("C" & row).Value
End If
If Range("D" & row).Value <> "" Then
Range("I" & resultRow).Value = Range("D" & row).Value
End If
row = row + 1
Loop
End Sub
Вот так выглядел мой Excel
И после того, как я запускаю вышеупомянутый макрос
Как видите, я решил добавить результаты к стороне исходной таблицы, так как это не разрушительно