Isso deve funcionar. Coloque em um módulo :
Public Sub sheetmerge()
Dim wkb As Workbook
Dim wks, wks1, wks2 As Worksheet
Set wkb = ThisWorkbook
Set wks = wkb.Sheets(1)
Set wks1 = wkb.Sheets(2)
Set wks2 = wkb.Sheets(3)
emptyRow1 = False
i = 1
k = 1
' Loops while there is data on sheet 1 column 1
While emptyRow1 = False
found = False
' extracts the name from column 1, row i
name1 = wks.Cells(i, 1)
If name1 <> "" Then
'As it is not empty then loop through Sheet2 names
emptyRow2 = False
j = 1
While emptyRow2 = False
name2 = wks1.Cells(j, 1)
If name2 <> "" Then
'As name2 is not empty then compare name and name 2
If name1 = name2 Then
'If name1 is the same as name2 then put the data on Sheet3
wks2.Cells(k, 1) = name1
wks2.Cells(k, 2) = wks.Cells(i, 2)
wks2.Cells(k, 3) = wks.Cells(i, 3)
wks2.Cells(k, 4) = wks1.Cells(j, 3)
found = True
k = k + 1
'stop looping sheet2 by setting emptyrow2 to True
emptyRow2 = True
End If
Else
'name2 is empty, then stop looping sheet2
emptyRow2 = True
End If
j = j + 1
Wend
Else
'name1 is empty then stop looping Sheet1
emptyRow1 = True
End If
'if after looping there was no coincidence of names then put the data from Sheet1
If found = False Then
If name1 <> "" Then
wks2.Cells(k, 1) = name1
wks2.Cells(k, 2) = wks.Cells(i, 2)
wks2.Cells(k, 3) = wks.Cells(i, 3)
k = k + 1
End If
End If
i = i + 1
Wend
'This area loops through Sheet2 seeking for coincidences
emptyRow2 = False
j = 1
While emptyRow2 = False
found = False
name2 = wks1.Cells(j, 1)
If name2 <> "" Then
emptyRow1 = False
i = 1
While emptyRow1 = False
name1 = wks.Cells(i, 1)
If name1 <> "" Then
If name2 = name1 Then
found = True
emptyRow1 = True
End If
Else
emptyRow1 = True
End If
i = i + 1
Wend
Else
emptyRow2 = True
End If
' If there wasn't a coincidence it means this name is in sheet2 but is not on Sheet1 so, put it in Sheet3.
If found = False Then
wks2.Cells(k, 1) = name2
wks2.Cells(k, 2) = wks1.Cells(j, 2)
wks2.Cells(k, 4) = wks1.Cells(j, 3)
k = k + 1
End If
j = j + 1
Wend
End Sub
Ele percorre as linhas em sheet1 colocando-as em sheet3 colocando uma quarta coluna se houver coincidência com sheet2 .
Depois disso, faz um loop em sheet2 colocando linhas sheet3 não encontradas em sheet1 .