Попробуйте этот код, используя массивы (Вы можете поместить результаты в любую ячейку вместо D10)
Sub Test()
Dim a, x, e, i As Long, j As Long, k As Long, m As Long
a = Range("D3").CurrentRegion.Value
ReDim b(1 To 10000, 1 To UBound(a, 2))
For j = LBound(a, 2) To UBound(a, 2)
k = 0
For i = LBound(a) To UBound(a)
x = Split(a(i, j), "~ ")
For Each e In x
k = k + 1
b(k, j) = e
Next e
If k > m Then m = k
Next i
Next j
Range("D10").Resize(m, UBound(b, 2)).Value = b
End Sub