This macro will be very fast, even on huge sets of data. It expects your two sheets to be named as shown, so you can edit the macro to change the sheet names if needed.
Option Explicit
Sub MergeData()
Dim LR As Long, Rw As Long, NR As Long, LC As Long, Col As Long
Dim ArrIN As Variant, ArrOUT As Variant, AnchorText As String
Dim ColsToMerge As Variant
ColsToMerge = Array(5, 6, 13)
With ThisWorkbook.Sheets("Original")
LR = .Range("E" & .Rows.Count).End(xlUp).Row
ArrIN = .Range("A1:S" & LR).Value
End With
ReDim ArrOUT(1 To LR, 1 To 19)
'Headers
For Col = 1 To 19
ArrOUT(1, Col) = ArrIN(1, Col)
Next Col
'This marks header rows to skip
AnchorText = ArrIN(1, 1)
NR = 2
For Rw = 2 To LR - 1
'skips header rows (ID)
If ArrIN(Rw, 1) <> AnchorText And Len(ArrIN(Rw, 1)) > 0 Then
'add rows to output
For Col = 1 To 19
ArrOUT(NR, Col) = ArrIN(Rw, Col)
Next Col
'merge the key columns
ArrOUT(NR, 5) = ArrIN(Rw, 5) & " " & ArrIN(Rw + 1, 5)
ArrOUT(NR, 6) = ArrIN(Rw, 6) & " " & ArrIN(Rw + 1, 6)
ArrOUT(NR, 13) = ArrIN(Rw, 13) + ArrIN(Rw + 1, 13)
NR = NR + 1
End If
Next Rw
With ThisWorkbook.Sheets("Expected Result")
.UsedRange.ClearContents
.Range("A1:S1").Resize(NR).Value = ArrOUT
.Activate
End With
End Sub
Bookmarks