Well, this was asked a while ago. It is more than one function. I am offering this as is, and I am not going to script it to make it fit into your model, you do that! This has everything you need to cut and paste together your solution.
On Error GoTo NotExists
sheetexist = True
sheetexist = False
Function testsheet(whichsheet, rowNum)
nret = sheetexist(whichsheet)
If nret = False Then makesheet (whichsheet)
nret = copyrowX(whichsheet, rowNum)
On Error GoTo ExitSub
.Sheets.Add(After:=.Sheets(.Sheets.Count)).Name = whatsheet
Function copyrowX(towhatsheet, whatrow)
ThisWorkbook.Worksheets("Sheet1").Range("A" & whatrow).EntireRow.Select
cellcount = Cells(ThisWorkbook.Worksheets(towhatsheet).Rows.Count, 1).End(xlUp).Row
ThisWorkbook.Worksheets(towhatsheet).Range("A" & cellcount).EntireRow.Select
cellcount = Cells(ThisWorkbook.Worksheets("Sheet1").Rows.Count, 1).End(xlUp).Row
For RowCount = 1 To cellcount
cellvalue = ThisWorkbook.Worksheets("Sheet1").Range("A" & RowCount).Value
nret = testsheet(cellvalue, RowCount)
Please read and understand the example I gave you. I did not build it to work as your example, but scripted it for you to learn.
All you need is the comparison of sheets. What happens when one sheet is only one item off, and you end up with all of sheet 2 on sheet 3 even though the items are on sheet 1? I am not going to code for that trap!