Try the following code (untested),assigned to a button and in a copy
of your workbook first:-
Dim dic As Object, rng As Range, wks As Worksheet, mypath As String, lr As Long
Set dic = CreateObject("scripting.dictionary")
Set wks = Sheet1
mypath = ThisWorkbook.Path & "\"
lr = wks.Range("F" & Rows.Count).End(xlUp).Row
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For nr = lr To 2 Step -1
If (Not dic.exists(.Cells(nr, "F").Value)) Then
dic.Add .Cells(nr, "F").Value, .Cells(nr, "F").Value
Set rng = .Range("A1:I" & .Cells(Rows.Count, 1).End(xlUp).Row)
rng.AutoFilter field:=6, Criteria1:=.Range("F" & nr).Value
ActiveWorkbook.SaveAs Filename:=mypath & .Range("F" & nr).Value & ".xlsx"
.AutoFilterMode = False
MsgBox "All Done!", vbExclamation
Application.CutCopyMode = False
Application.DisplayAlerts = True
Application.ScreenUpdating = True
The code should create a new file for each name in Column F with the relevant rows of data for each name being transferred to the relevant file. Each new file will be saved in the same folder as your main file.
I hope that this helps.
P.S.: You may be interested in the following query in another forum. Its amazingly close to your own query and has a very good resolution clearly set out:-