This should get you started.
Lets say your data looks like this
Paste this code in a module. (Note: This code is not extensively tested but conveys the message)
Option Explicit
Sub Sample()
Dim MyAr As Variant
Dim FinalAr() As String, TmpAr() As String
Dim ws As Worksheet
Dim lrow As Long, i As Long, n As Long, j As Long
'~~> Set this to the relevant sheet
Set ws = ThisWorkbook.Sheets("Sheet1")
With ws
'~~> get last row of col A
lrow = .Range("A" & .Rows.Count).End(xlUp).Row
'~~> Store the values in an array
MyAr = .Range("A1:A" & lrow)
'~~> Loop through the array and split it on "&" and store it in another array
For i = LBound(MyAr) To UBound(MyAr)
If InStr(1, MyAr(i, 1), "&") Then
TmpAr = Split(MyAr(i, 1), "&")
For j = LBound(TmpAr) To UBound(TmpAr)
n = n + 1
ReDim Preserve FinalAr(n)
FinalAr(n) = Trim(TmpAr(j))
Next j
Else
n = n + 1
ReDim Preserve FinalAr(n)
FinalAr(n) = Trim(MyAr(i, 1))
End If
Next i
'~~> Past the outcome in Col B
.Range("B1").Resize(UBound(FinalAr) + 1, 1).Value = Application.Transpose(FinalAr)
'~~> Replace all mrs/mr etc
.Columns(2).Replace What:="MRS", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
.Columns(2).Replace What:="MR", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
.Columns(2).Replace What:="MISS", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
'~~> Find Last Row of Col B
lrow = .Range("B" & .Rows.Count).End(xlUp).Row
'~~> Loop through col B and split the names
For i = 2 To lrow
If InStr(1, .Range("B" & i), " ") Then
TmpAr = Split(Trim(.Range("B" & i)), " ")
n = 1
For j = LBound(TmpAr) To UBound(TmpAr)
.Range("B" & i).Offset(, n).Value = TmpAr(j)
n = n + 1
Next
Else
.Range("C" & i).Value = .Range("B" & i).Value
End If
Next i
End With
End Sub
OutCome (Screenshot)