Страница 1 из 1

значение формулы в VBA

Добавлено: 27 окт 2014, 16:07
jaroslav
Добрый день. Пишу в ячейке G2 формулу: "=СУММПРОИЗВ((ПСТР($A$2:$A$12000;1; 3)="311")*($B$2:$B$12000=F2);$D$2:$ D$12000)"

Хочу в VBA получить значение вышеописанной формулы.
На VBA пишу следующий код:

Код: Выделить всё

Range("G2") = _
WorksheetFunction.SumProduct((Mid(Range("A2:A12000"), 1, 3) = "311") * (Range("B2:B12000") = Range("F2")), Range("D2 :D 12000"))
Выдает ошибку 13 Type mismatch

Что я делаю не так?

Re: значение формулы в VBA

Добавлено: 27 окт 2014, 16:25
pashulka
Если формулу нужно будет "собирать" из переменных, то :

Код: Выделить всё

iResult = Evaluate("SUMPRODUCT((MID(A2:A12000,1, 3)=""311"")*(B2:B12000=F2),D2 :D 12000)")

iResult = Evaluate("SUM((MID(A2:A12000,1, 3)=""311"")*(B2:B12000=F2)*D2 :D 12000)")
Если нет, то достаточно :

Код: Выделить всё

iResult = [SUMPRODUCT((MID(A2:A12000,1, 3)=""311"")*(B2:B12000=F2),D2 :D 12000)]

iResult = [SUM((MID(A2:A12000,1, 3)=""311"")*(B2:B12000=F2)*D2 :D 12000)]

Re: значение формулы в VBA

Добавлено: 27 окт 2014, 16:35
jaroslav
Спасибо, pashulka. А что делает Evaluate?

Re: значение формулы в VBA

Добавлено: 27 окт 2014, 17:28
pashulka
Jaroslav, Рекомендую обратиться, так сказать, напрямую к офисной справке (выделить функцию, клавиша F1) ибо там есть даже упоминание []

P.S. Кстати, если вышеупомянутая формула так и останется в ячейке G2, то получить её значение - можно и без вычисления самой формулы, т.е. [G2].Value , Range("G2").Value просто Range("G2") и т.д.

Re: значение формулы в VBA

Добавлено: 27 окт 2014, 18:36
jaroslav
Спасибо за ответ