Hi
May be
Sub kTest()
Dim k, e, v, fso As Object, i As Long, u As String
Set fso = CreateObject("scripting.filesystemobject")
With CreateObject("scripting.dictionary")
.comparemode = 1
For Each e In Array("x", "y", "z", "p")
k = Worksheets(e).Range("a1").CurrentRegion.Resize(, 4).Value2
For i = 2 To UBound(k, 1)
v = .Item(k(i, 3) & "|" & k(i, 4))
If Not LenB(v) Then
u = Replace(Replace(fso.gettempname, "rad", vbNullString), ".tmp", vbNullString)
u = k(i, 3) & "_" & k(i, 4) & "_" & u
.Item(k(i, 3) & "|" & k(i, 4)) = u
End If
Next
Next
k = .items
End With
With Worksheets("master")
.Range("a" & .Rows.Count).End(3).Offset(1).Resize(UBound(k) + 1) = Application.Transpose(k)
End With
End Sub