Дми3й, вот еще пример (но без словарей)
[vba]Код
Private Sub CommandButton1_Click()
lr = Cells(Rows.Count, 1).End(xlUp).Row
Set sh2 = Sheets("Склад")
Set sh1 = Sheets("Закупка товара")
For i = 3 To lr
prod = WorksheetFunction.CountIf(sh2.Columns("a:a"), Cells(i, 1))
With sh2
If prod > 0 Then
r = .Columns("A:A").Find(What:=Cells(i, 1)).Row
.Range("b" & r) = .Range("b" & r) + sh1.Range("b" & i)
.Range("d" & r) = sh1.Range("c" & i)
Else
r = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
.Range("a" & r) = sh1.Range("a" & i)
.Range("b" & r) = sh1.Range("b" & i)
.Range("d" & r) = sh1.Range("c" & i)
End If
End With
Next i
End Sub
[/vba]