Excel/VBA isn't very well set up to handle arrays that way. At least not up to version 2007.
You can use jack-ups on the lines of the code below (just run it and see) to get the sort of result you seem to want. But obviously not very satisfactory.
It is very easily done using loops. These work fine with text, which is no obstacle whatever to their use.
Sub jacked_up_array()
Const a As String = "1, 2, 3; 4, 5, 6; 7, 8, 9; 8, 7, 6"
With Cells(1).Resize(1 + Len(a) - Len(Replace(a, ";", vbNullString)))
.Cells = Application.Transpose(Split(a, ";"))
.TextToColumns Cells(1), _
comma:=True, fieldinfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1))
End With
End Sub
Bookmarks