I'm not sure if this is what you want. It will turn
a aa aaab bb
c cc ccc
into
a
aa
aaa
b
bb
c
cc
ccc
Sub test()
Dim originalRange As Range, readThisRange As Range
Dim destinationTopCell As Range
Dim dataRRay As Variant, outputRRay As Variant
Dim i As Long, j As Long, rowPointer As Long
Set originalRange = ThisWorkbook.Sheets(1).Range("a2:c3")
Set destinationTopCell = ThisWorkbook.Sheets(1).Range("d15")
Set readThisRange = originalRange.Range("a1")
For i = 1 To originalRange.Rows.Count
Set readThisRange = Range(originalRange.Cells(i, 1).EntireRow.Range("ie1").End(xlToLeft) _
, readThisRange)
Next i
dataRRay = readThisRange.Value
With readThisRange
ReDim outputRRay(1 To (UBound(dataRRay, 2) * (UBound(dataRRay, 1) + 1)))
End With
i = 1
Do
For j = 1 To UBound(dataRRay, 2)
If dataRRay(i, j) = vbNullString Then Exit For
rowPointer = rowPointer + 1
outputRRay(rowPointer) = dataRRay(i, j)
Next j
rowPointer = rowPointer + 1
i = i + 1
Loop Until i > UBound(dataRRay, 1)
ReDim Preserve outputRRay(1 To rowPointer)
With destinationTopCell
Range(.Range("a1"), .Cells(rowPointer, 1)).Value = Application.Transpose(outputRRay)
End With
End Sub
originalRange and destinationTopCell need to be changed to meet your situation.