Te anexo la macro, los nombres deberán estar en la columna A, el resultado te lo pondrá en las columnas B, C y D.
Sub SepararNombre()
'Por.Dante Amor
Range("B:D").ClearContents
For i = 2 To Range("A" & Rows.Count).End(xlUp).Row
dat2 = Split(Cells(i, "A"), ",")
If UBound(dat2) > 0 Then
Cells(i, "D") = LTrim(dat2(1))
esp = InStr(1, dat2(0), " ")
If esp > 1 Then
Cells(i, "B") = Left(dat2(0), esp - 1)
Cells(i, "C") = Mid(dat2(0), esp + 1)
End If
Else
esp = InStr(1, Cells(i, "A"), " ")
If esp > 1 Then
Cells(i, "B") = Left(Cells(i, "A"), esp - 1)
Cells(i, "C") = Mid(Cells(i, "A"), esp + 1)
End If
End If
Next
End Sub
Ejemplo:

Si el nombre tiene un apellido compuesto:
De la Barca Paz, Juan
La macro te pondrá en la primer columna la primer palabra que encuentre, y en la siguiente columna el resto de los datos hasta encontrar la coma. Es difícil saber si es un apellido compuesto y cuál es el apellido1 y cuál es el apellido2.
En otro ejemplo, si el nombre no tiene la coma;
Amor mendiola dante
La macro pondrá la primera palabra en la primer columna y el resto en la siguiente columna, también no se puede saber cuáles son los apellidos y los nombres si no existe la coma. Estos casos tendrás que analizarlos uno por uno y corregirlos manualmente.