ternovsky, если отправите мне эти два листа на почту (в профиле, через личку не получится), я попробую ускорить работу макроса. Более 20 мин - это не нормально, даже для 1 000 000 строк. Должно быть 30-40 сек, не более.
подскажите, как в данном случае заменить функцию "СУММЕСЛИМН" макросом на листе "база" хранятся данные в лист "отчет" вставляется сумма литров в зависимости от даты
Sub ReplaceSumIf()
Dim dic As Object
Set dic = CreateObject("Scripting.Dictionary")
ReadDic dic
PrintDic dic
End Sub
Sub ReadDic(dic As Object)
With Sheets("база")
Dim y As Long
Dim a As Variant
y = .Cells(.Rows.Count, 1).End(xlUp).Row
If y = 1 Then y = 2
a = .Range(.Cells(1, 1), .Cells(y, 3))
End With
For y = 2 To UBound(a, 1)
dic.Item(a(y, 1)) = dic.Item(a(y, 1)) + a(y, 3)
Next
End Sub
Sub PrintDic(dic As Object)
With Sheets("отчет")
.Cells(3, 1).Resize(dic.Count, 1) = Application.Transpose(dic.Keys())
.Cells(3, 4).Resize(dic.Count, 1) = Application.Transpose(dic.Items())
End With
End Sub