Hi again,
It didnt include their second first name in the first name column
Hey! That bit wasn't included in the original tech spec.! 
My previous workbook has been amended to do what you want - the code used has been modified as shown below:
Option Explicit
Private Sub ProcessNames()
Const sSEPARATOR As String = " "
Dim iNoOfColumns As Integer
Dim sThirdName As String
Dim rNewCell As Range
Dim vaNames As Variant
Dim rCell As Range
For Each rCell In Selection.Cells
' Add a separator character at the end of the string
' to ensure that the Split method works correctly
rCell.Value = rCell.Value & sSEPARATOR
vaNames = Split(rCell.Value, sSEPARATOR)
iNoOfColumns = UBound(vaNames)
' Insert the Name "components" into the adjacent cells
With rCell.Offset(0, 1)
Range(.Cells(1, 1), _
.Cells(1, iNoOfColumns)).Value = vaNames
End With
' Remove the comma character at the end of the surname
Set rNewCell = rCell.Offset(0, 1)
rNewCell.Value = Replace(rNewCell.Value, ",", vbNullString)
Set rNewCell = rCell.Offset(0, 3)
sThirdName = rNewCell.Value
' Proceed only if the third "component" (initial) of the Name is non-blank
If Len(sThirdName) > 0 Then
' Allow a single initial followed by a full stop . . .
If Len(sThirdName) = 2 And _
Right$(sThirdName, 1) = "." Then
rNewCell.Value = sThirdName
' . . . or else allow a single initial
ElseIf Len(sThirdName) = 1 Then
rNewCell.Value = sThirdName
' . . . if the third "component" is not a single initial
' then append it to the First Name value
Else: rNewCell.Value = vbNullString
Set rNewCell = rCell.Offset(0, 2)
rNewCell.Value = rNewCell.Value & sSEPARATOR & sThirdName
End If
End If
Next rCell
End Sub
Hope this helps - as before, please let me know how you get on.
Regards,
Greg M
Bookmarks