The best way to learn, is to use the boards search utility, and search the board before you post. Play with the code you find, see if between the boards samples and the help in Excel, if you can make some progress and when you really get stuck then post for help showing your code and indicating the one small portion or general idea you have that you just can't get.
Think about the problem and the steps it will take to make it happen. From your post you have not done this yet, and from the recorded code you posted, you are missing steps.
To copy to a sheet you need to have that sheet first, do you want to name a new sheet using an InPutBox to get user input about it or do you want it to be automatically named in some way, using the default name or usinf a value found on the master sheet or by some algorithm. First decide how to start, approach the problem in steps, make progress step by step. Very little ever happens all at once. Decide what needs to happen first then what must happen next, untill the promlem is finished.
Sub myNewList()
'Standard module code, like: Module1.
Dim lngLstRow&, lngMyshtsCnt&, lngNewLstRow&
Dim rngMyData As Object
Dim strMyNewShtNm$
'Count the sheets in the Workbook.
lngMyshtsCnt = Worksheets.Count
With Sheets.Add
.Move After:=Sheets(lngMyshtsCnt + 1)
.Name = "myList" & lngMyshtsCnt + 1
End With
strMyNewShtNm = ActiveSheet.Name
'Count the used rows in column D, AKA: 4 on Sheet1.
lngLstRow = Sheets("Sheet1").Cells(Rows.Count, 4).End(xlUp).Row
'Define Sheet1's data range!
Set rngMyData = Sheets("Sheet1").Range("D2:D" & lngLstRow)
'Get starting row on new sheet!
lngNewLstRow = Sheets(strMyNewShtNm).Cells(Rows.Count, 4).End(xlUp).Row + 1
'Get data to move!
For Each Cell In rngMyData
'Test fot good data and copy it to the new sheet!
If Cell.Value <> "" Then
lngNewLstRow = lngNewLstRow + 1
Sheets(strMyNewShtNm).Range("A" & lngNewLstRow).Value = Cell.Value
End If
Next Cell
End Sub