Страница 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
Спасибо за ответ