Через несколько минут я задал go вопрос по этому поводу и решил создать новый, с более подробным описанием проблемы. Итак, я подготовил простой лист:
On G4
(green) I placed the formula =SUMIFS(B1:B20;A1:A20;"> = "& E4; A1: A20;" <"& E5) </code>, и он отлично работает.
Ячейка E4
(синий) залито скриптом:
Sub Button1_Click()
Dim SH As Worksheet: Set SH = ThisWorkbook.Sheets("Sheet1")
Dim R1 As Range: Set R1 = SH.Range(SH.Cells(1, 1), SH.Cells(20, 1))
Dim R2 As Range: Set R2 = SH.Range(SH.Cells(1, 2), SH.Cells(20, 2))
Dim V1 As Double: V1 = SH.Cells(4, 5).Value
Dim V2 As Double: V2 = SH.Cells(5, 5).Value
SH.Cells(5, 7).FormulaR1C1 = WorksheetFunction.SumIfs(R2, R1, ">=" & V1, R1, "<" & V2)
End Sub
Легко видеть, что значение также должно быть 18
. Однако оно оценивается как 0
.
Другое дело, когда я объявляю V1
и V2
как longs:
Dim V1 As Long: V1 = Int(SH.Cells(4, 5).Value)
Dim V2 As Long: V2 = Int(SH.Cells(5, 5).Value)
ячейка E4
(синяя) оценивается как 17
(что правильно, потому что есть 17
значения между 44004
и 44005
).
Кто-нибудь что-нибудь знает об этом? Мне это кажется багом ...