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

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
jaroslav
Сообщения: 45
Зарегистрирован: 07 дек 2009, 13:25

Добрый день. Пишу в ячейке 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

Что я делаю не так?
pashulka
Сообщения: 831
Зарегистрирован: 24 ноя 2004, 03:46
Контактная информация:

Если формулу нужно будет "собирать" из переменных, то :

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

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)]
jaroslav
Сообщения: 45
Зарегистрирован: 07 дек 2009, 13:25

Спасибо, pashulka. А что делает Evaluate?
pashulka
Сообщения: 831
Зарегистрирован: 24 ноя 2004, 03:46
Контактная информация:

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

P.S. Кстати, если вышеупомянутая формула так и останется в ячейке G2, то получить её значение - можно и без вычисления самой формулы, т.е. [G2].Value , Range("G2").Value просто Range("G2") и т.д.
jaroslav
Сообщения: 45
Зарегистрирован: 07 дек 2009, 13:25

Спасибо за ответ
Ответить