وعليكم السلام أخي الكريم أبو عبد النور
بارك الله فيك على الكود الجميل ..
يعيب الكود فقط أنه لابد أن تكون القيم المتشابهة متتالية وإلا لن تكون النتائج صحيحة ...
أما الكود الذي قدمته لم أجربه على الملف لكن يعيب أنه لابد من التخلص من المسافات الزائدة لذا وجب إضافة إلى الكود لكي يتلاشى خطأ المسافات والكود بهذا الشكل
Sub UniqueListAndSum()
Dim ws As Worksheet
Dim i As Long
Dim j As Long
Dim k As Long
Dim x, y()
ReDim y(1 To Rows.Count, 1 To 2)
With CreateObject("Scripting.Dictionary")
.CompareMode = 1
Set ws = Sheets("StockReport")
x = ws.Range("A1:B" & ws.Cells(Rows.Count, 1).End(xlUp).Row).Value
For i = 2 To UBound(x)
x(i, 1) = Trim(x(i, 1))
If Len(x(i, 1)) Then
If .Exists(x(i, 1)) Then
k = .Item(x(i, 1))
y(k, 2) = y(k, 2) + x(i, 2)
Else
j = j + 1
.Item(x(i, 1)) = j
y(j, 1) = x(i, 1)
y(j, 2) = x(i, 2)
End If
End If
Next i
End With
With ws
.Columns("I:J").ClearContents
.Range("I1:J1") = Array("Names", "Quantity")
.Range("I2").Resize(j, 2).Value = y()
End With
End Sub