.
Here is one way to accomplish your goal :
Option Explicit
Sub CreateSheets()
Dim dicKey, dicValues, data, lastrow As Long
Dim i As Long, ws As Worksheet, wsDest As Worksheet
Set ws = ActiveSheet
lastrow = Cells(Rows.Count, 1).End(xlUp).Row
data = Range("A2:A" & lastrow) ' load data into variable
With CreateObject("scripting.dictionary")
For i = 1 To UBound(data)
If .Exists(data(i, 1)) = False Then
dicKey = data(i, 1) 'set the key
dicValues = data(i, 1) 'set the value for data to be stored
.Add dicKey, dicValues
Set wsDest = Sheets.Add(After:=Sheets(Worksheets.Count))
wsDest.Name = data(i, 1)
' Sheets(data(i, 1)).Cells(1, 1).Value = ws.Cells(i + 1, 1).Value
' Sheets(data(i, 1)).Cells(1, 2).Value = ws.Cells(i + 1, 2).Value
End If
Next i
End With
End Sub
Sub copypaste()
Dim dicKey, dicValues, data, lastrow As Long
Dim i As Long, ws As Worksheet, wsDest As Worksheet
Set ws = ActiveSheet
lastrow = Cells(Rows.Count, 1).End(xlUp).Row
data = Range("A2:A" & lastrow) ' load data into variable
With CreateObject("scripting.dictionary")
For i = 1 To UBound(data)
If .Exists(data(i, 1)) = False Then
dicKey = data(i, 1) 'set the key
dicValues = data(i, 1) 'set the value for data to be stored
.Add dicKey, dicValues
Sheets(data(i, 1)).Cells(1, 1).Value = ws.Cells(i + 1, 1).Value
Sheets(data(i, 1)).Cells(1, 2).Value = ws.Cells(i + 1, 2).Value
End If
Next i
End With
End Sub