Я новичок в Excel. Мне нужно оценить Sum-продукт в VBA Excel.Sumproduct для оценки в VBA Excel
Вот мой рабочий лист:.
- Cell D4 содержит определенную дату (выделены желтым цветом)
- Cell D6 содержит новый введенный Date (выделено красным цветом)
- Колонка C содержит Легенда (Подсвеченный розовый)
- Колонка J Содержит месяц. (Выделено зеленым)
- Столбец K содержит легенду об этой конкретной сделке. (Выделено Orange)
- Колонка I содержит значения, которые будут суммированные (Выделено синий)
- Колонка D9 года покажет результат суммарного продукта (Выделено Gray)
То, что я пытаюсь сделать, это что:
Я бы ввел дату в ячейке № D6, которая должна будет суммировать столбец I с помощью соответствующего месяца столбца J с ячейкой D6, и если совпадающий, то он будет соответствовать легенде столбца K с буквой легенды в столбце C и если после этого будет соответствовать снова, он суммирует столбец I и покажет его значение в столбце D9 и далее.
Это формула, которую я использовал, и она работала без VBA.
SUMPRODUCT((MONTH($J$9:$J$12000)=MONTH($D$6))*($K$9:$K$12000=C10)*($I$9:$I$12000))
Назначение использования VBA - использовать While Loop. Когда я вводю дату в D6 в течение определенного месяца, тогда она должна увеличивать или уменьшать месяц и добавлять их до другой указанной даты ячейки D4 (выделено желтым цветом).
Но когда я использую указанную формулу, она возвращает #Value.
Sub Sub1()
Dim a, b, c As Integer
a = Sheet20.Cells(6, 4)
b = 4
c = 10
Do While a >= Cells(4, 4)
Sheet20.Cells(c, b).Value = Evaluate(" (SumProduct((Month(Sheet20.Range(J9:J12000)) = Month(Cells(6, 4))) * (Sheet20.Range(K9:K12000) = Cells(c, 3)) * (Sheet20.Range(I9:I12000)))")
a = a - 1
Loop
End Sub
Правильно ли вы выбрали диапазон?