Try this
Sub SplitData()
Dim sh As Worksheet
Dim lastCode As String
Dim lastrow As Long
Dim startrow As Long
Dim i As Long
With ActiveSheet
lastrow = .Cells(.Rows.Count, "A").End(xlUp).Row
.Range("A1").Resize(lastrow, 6).Sort key1:=.Range("D1"), order1:=xlAscending, Header:=xlYes
For i = 2 To lastrow
If .Cells(i, "A").Value <> lastCode Then
lastCode = .Cells(i, "D").Value
Set sh = .Parent.Worksheets.Add(after:=.Parent.Worksheets(.Parent.Worksheets.Count))
sh.Name = lastCode
startrow = i
Do While .Cells(i, "D").Value = lastCode
i = i + 1
Loop
.Rows(1).Copy sh.Range("A1")
.Rows(startrow).Resize(i - startrow).Copy sh.Range("A2")
i = i - 1
End If
Next i
End With
End Sub
Bookmarks