這應該足以讓你開始。
Sub split_and_sort()
Dim rw As Long, v As Long, vKEYs As Variant, vPAIR As Variant
With Worksheets("Sheet5") '<~~ set this wroksheet reference properly!
With .Cells(1, 1).CurrentRegion
.Cells(1, .Columns.Count).Resize(1, 5) = Array("a", "b", "c", "d", "e")
With .Resize(.Rows.Count, .Columns.Count + 4)
For rw = 2 To .Rows.Count
vKEYs = Split(.Cells(rw, 4).Value2, Chr(44))
.Cells(rw, 4).Clear
For v = LBound(vKEYs) To UBound(vKEYs)
vPAIR = Split(vKEYs(v), Chr(58))
If CBool(UBound(vPAIR)) Then
If IsError(Application.Match(vPAIR(0), .Rows(1), 0)) Then _
.Cells(1, Columns.Count).End(xlToLeft).Offset(0, 1) = vPAIR(0)
.Cells(rw, Application.Match(vPAIR(0), .Rows(1), 0)) = vPAIR(1)
End If
Next v
Next rw
End With
End With
End With
End Sub
如果您在列d細胞無值或非法值不會再先被分割上一個逗號,然後在一個冒號,你可能需要添加一些錯誤控制