Hello
This may help you .. I suppose you have two columns of data A & B ..
Sub Test()
    Dim a           As Variant
    Dim i           As Long
    Dim j           As Long
    Dim x           As Long

    a = Range("A1").CurrentRegion.Value

    For i = 2 To UBound(a)
        x = IIf(UBound(Split(a(i, 2), " ")) + 1 > x, UBound(Split(a(i, 2), " ")) + 1, x)
    Next i
    ReDim b(1 To UBound(a, 1) - 1, 1 To x + 1)
    
    For i = 2 To UBound(a)
        b(i - 1, 1) = a(i, 1)
        For j = 1 To UBound(Split(a(i, 2), " ")) + 1
            b(i - 1, j + 1) = Split(a(i, 2), " ")(j - 1)
        Next j
    Next i
    
    Debug.Print b(1, 2)     'John
    Debug.Print b(2, 2)     'Peter
    Debug.Print b(3, 2)     'Sarah
    Debug.Print b(3, 3)     'Peter
End Sub