Попробуйте этот код (не проверено):
Sub Get_Data()
Dim My_array(1 To 5, 1 To 2), RSh As Worksheet
On Error Resume Next
'Change the sheets names if they are different,and signs
My_array(1, 1) = "sheet1": My_array(1, 2) = "1"
My_array(2, 1) = "sheet2": My_array(2, 2) = "1"
My_array(3, 1) = "sheet3": My_array(3, 2) = "-1"
My_array(4, 1) = "sheet4": My_array(4, 2) = "-1"
My_array(5, 1) = "sheet5": My_array(5, 2) = "1"
Set RSh = Sheets("sheet6")
Dim r As Long, rMax As Long, i As Long, Fnd As Range, m As Long
m = RSh.Cells(Rows.Count, 1).End(xlUp).Row + 1
RSh.Range(RSh.Cells(2, 1), RSh.Cells(m, 6)).ClearContents
m = 2
For i = LBound(My_array, 1) To UBound(My_array, 1)
With Sheets(My_array(i, 1))
rMax = .Cells(.Rows.Count, 1).End(xlUp).Row
For r = 2 To rMax
Set Fnd = RSh.Columns(1).Find(.Cells(r, 1).Value, LookAt:=xlWhole)
If Fnd Is Nothing Then
RSh.Range(RSh.Cells(m, 1), RSh.Cells(m, 3)).Value = .Range(.Cells(r, 1), .Cells(r, 3)).Value
RSh.Cells(m, 4).Value = .Cells(r, 4).Value * My_array(i, 2)
m = m + 1
Else
RSh.Cells(Fnd.Row, 4).Value = RSh.Cells(Fnd.Row, 4).Value + (.Cells(r, 4).Value * My_array(i, 2))
End If
Next r
End With
Next i
End Sub