Have a look at the following link to a test work book I created for another Poster a couple of months ago:-
I believe that this is a similar scenario to yours and should work for you with a couple of minor changes.
Following is the code associated with the test file:-
Dim ar As Variant
Dim i As Integer
ar = Array("Big", "Little", "Medium")
Application.ScreenUpdating = False
For i = 0 To UBound(ar)
Sheet1.Range("K2", Sheet1.Range("K" & Sheet1.Rows.Count).End(xlUp)).AutoFilter 1, ar(i)
[A2].CurrentRegion.Copy Sheets(ar(i)).Range("A" & Rows.Count).End(3)
Application.CutCopyMode = False
Application.ScreenUpdating = True
MsgBox "Data transfer completed!", vbExclamation, "Status"
In line 7 of the code, change the array titles to the names of your work sheets ("Matt", "Tom", etc. etc.). Spell them exactly as per the sheet names.
In line 13, change any "K" that you see to "A" as your criteria (names) are in Column A. If your headings are in row 1, then change the K2 to A1.
In line 19, change the "K" to "A". Again, if your headings are in row 1, change the K2 to A1.
It should all then work for you but test it first in a copy of your work book. Run the code from your Master sheet.
I also assume that all the sheets are set up the same.
In the test file above, click on the "RUN" button to see it work.
I hope that this helps.