Public Sub GPE()
Dim Dic As Object, sArr(), dArr(), I As Long, Tem As String
Set Dic = CreateObject("Scripting.Dictionary")
sArr = Range([A3], [A3].End(xlDown)).Resize(, 3).Value
ReDim dArr(1 To UBound(sArr, 1), 1 To 1)
For I = 1 To UBound(sArr, 1)
Tem = sArr(I, 1) & sArr(I, 3)
If Not Dic.Exists(Tem) Then
Dic.Add Tem, 1
dArr(I, 1) = "P" & sArr(I, 3) & Format(1, "000") & "-" & Format(sArr(I, 1), "mmyy")
Else
Dic.Item(Tem) = Dic.Item(Tem) + 1
dArr(I, 1) = "P" & sArr(I, 3) & Format(Dic.Item(Tem), "000") & "-" & Format(sArr(I, 1), "mmyy")
End If
Next I
[D3].Resize(I - 1) = dArr
Set Dic = Nothing
End Sub