Try this for Results on sheet "SUMMARY"
Sub MG04Dec22
Dim Rng As Range
Dim Dn As Range
Dim Ray1 As Variant
Dim Ray2 As Variant
Dim Ray As Variant
Dim r As Long
Dim Num As Double
Dim Dic As Object
Dim n As Long
With Sheets("IN")
Ray1 = .Range(.Range("A2"), .Range("A" & Rows.Count).End(xlUp)).Resize(, 2)
End With
With Sheets("OUT")
Ray2 = .Range(.Range("A2"), .Range("A" & Rows.Count).End(xlUp)).Resize(, 2)
End With
Set Dic = CreateObject("scripting.dictionary")
Dic.CompareMode = vbTextCompare
Ray = Array(Ray1, Ray2)
For n = 0 To 1
For r = 1 To UBound(Ray(n), 1)
Num = IIf(n = 0, Ray(n)(r, 2), -Ray(n)(r, 2))
If Not Dic.Exists(Ray(n)(r, 1)) Then
Dic.Add Ray(n)(r, 1), Num
Else
Dic.Item(Ray(n)(r, 1)) = Dic.Item(Ray(n)(r, 1)) + Num
End If
Next r
Next n
With Sheets("SUMMARY")
.Range("A1:B1").Value = Array("NUMBER", "QTY")
.Range("A2").Resize(Dic.Count, 2) = Application.Transpose(Array(Dic.Keys, Dic.items))
End With
End Sub
Regards Mick
Bookmarks