Sub CopyData()
Application.ScreenUpdating = False
Dim bottomB As Integer
bottomB = Range("B" & Rows.Count).End(xlUp).Row
Dim c As Range
Dim rng As Range
Dim ws As Worksheet
ActiveSheet.Sort.SortFields.Clear
ActiveSheet.Sort.SortFields.Add Key:=Range("B2:B" & bottomB), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveSheet.Sort
.SetRange Range("A1:F" & bottomB)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
For Each c In Range("B2:B" & bottomB)
Set ws = Nothing
On Error Resume Next
Set ws = Worksheets(Format(c, "dd-MMM-yy"))
On Error GoTo 0
If ws Is Nothing Then
Worksheets.Add(After:=Sheets(Sheets.Count)).Name = Format(c, "dd-MMM-yy")
End If
Next c
For Each rng In Sheets("Sheet1").Range("B2:B" & bottomB)
For Each ws In Sheets
If Format(rng, "dd-MMM-yy") = ws.Name Then
rng.EntireRow.Copy Sheets(ws.Name).Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)
End If
Next ws
Next rng
Application.ScreenUpdating = True
End Sub