i attach the file i used for testing to give an idea.
code execution time included here.
Sub vbax_56911_transpose_multi_col_timer()
Dim NameCount As Long, i As Long, j As Long, k As Long
Dim ArrTrns
Dim StartTime As Double
StartTime = Timer
With Worksheets("Sheet1")
NameCount = Application.CountA(.Cells(1).CurrentRegion.Columns(1).Offset(1)) 'Offset 1 row to exclude header
ReDim ArrTrns(1 To NameCount * 3, 1 To 3) '*3 to include 3 stages for each name
For i = 1 To NameCount
For j = 2 To 4
k = k + 1
ArrTrns(k, 1) = .Cells(i + 1, 1)
ArrTrns(k, 2) = .Cells(1, j)
ArrTrns(k, 3) = .Cells(i + 1, j)
Next j
Next i
End With
With Worksheets("Sheet2")
.Cells(1).CurrentRegion.Clear 'clear existing data
.Cells(1).Resize(UBound(ArrTrns, 1), UBound(ArrTrns, 2)) = ArrTrns
End With
MsgBox Round(Timer - StartTime, 2)
End Sub