Another couple possibilities to play with.
Works on the attachment from Post #1.
Sub Maybe_1()
Dim ii As Long, bb, x As Long, t
Dim a, aa, i As Long, b, jj As Long, k As Long, j As Long
t = Timer
For ii = 2 To Cells(Rows.Count, 3).End(xlUp).Row
bb = Split(Cells(ii, 3), ",")
x = x + Len(Cells(ii, 3)) - Len(Replace(Cells(ii, 3), ",", ""))
Next ii
a = Cells(2, 1).Resize(Cells(Rows.Count, 1).End(xlUp).Row - 1, 5).Value
ReDim aa(1 To x + Cells(Rows.Count, 3).End(xlUp).Row - 1, 1 To 5)
For i = LBound(a) To UBound(a)
b = Split(a(i, 3), ",")
For jj = LBound(b) + 1 To UBound(b) + 1
k = k + 1
j = 1
aa(k, j) = a(i, j)
aa(k, j + 1) = a(i, j + 1)
aa(k, j + 2) = Trim(b(jj - 1))
aa(k, j + 3) = a(i, j + 3)
aa(k, j + 4) = a(i, j + 4)
Next jj
Next i
Cells(2, 7).Resize(UBound(aa, 1), 5).Value = aa
MsgBox "This macro took " & Format(Round(Timer - t, 2), "00:00:00.00") & " seconds to run."
End Sub
Sub Maybe_2()
Dim c As Range, x As Long, t
Application.ScreenUpdating = False
t = Timer
For Each c In Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row)
x = Len(c.Offset(, 2)) - Len(Replace(c.Offset(, 2), ",", "")) + 1
With Cells(Rows.Count, 7).End(xlUp).Offset(1).Resize(x)
.Value = c.Value
.Offset(, 1).Value = c.Offset(, 1).Value
.Offset(, 2).Value = Application.Transpose(Split(c.Offset(, 2), ","))
.Offset(, 3).Value = c.Offset(, 3).Value
.Offset(, 4).Value = c.Offset(, 4).Value
End With
Next c
Application.ScreenUpdating = True
MsgBox "This macro took " & Format(Round(Timer - t, 2), "00:00:00.00") & " seconds to run."
End Sub