Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.06.2014, 20:04   #1
peq
Форумчанин
 
Регистрация: 01.03.2009
Сообщений: 230
По умолчанию перевод формул в текст макроса

добрый день!

возник вопрос.
есть формула: "{=МАКС(СТРОКА(A2:A1000)*(A2:A1000< >0)*(B2:B1000<>100))}"
можно ли ее перенести в код vba?
и существует ли какой-нибудь достаточно гибкий механизм для перевода формул в код?

когда-то давно натыкался вроде.. но сейчас уже не могу вспомнить.
peq вне форума Ответить с цитированием
Старый 19.06.2014, 23:36   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Код:
range("e40").FormulaArray="=MAX(ROW(A2:A1000)*(A2:A1000<0)*(B2:B1000<>100))"
чем не вариант?

а если вы хотите преобразовать формулу в макрос, выполняющий аналогичный вычисления, - то никак.

можно вычислить значение без вставки формулы в ячейку:
Код:
result = Application.evaluate("=MAX(ROW(A2:A1000)*(A2:A1000<0)*(B2:B1000<>100))")

Последний раз редактировалось EducatedFool; 19.06.2014 в 23:38.
EducatedFool вне форума Ответить с цитированием
Старый 20.06.2014, 12:03   #3
peq
Форумчанин
 
Регистрация: 01.03.2009
Сообщений: 230
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
[CODE]range("e40").
можно вычислить значение без вставки формулы в ячейку:
Код:
result = Application.evaluate("=MAX(ROW(A2:A1000)*(A2:A1000<0)*(B2:B1000<>100))")
именно это решение и хотел - просто криво немного сформулировал
большое спасибо
единственный момент смотрю/не понимаю - а где здесь обозначается, что формула, которая стоит под оператором является формулой массива - не скажите?

p.s.
и еще один вопрос по теме - а в случае других формул каким образом правильнее конвертировать имена русских операторов в английские? (сумм->sum, макс->max, и т.д.)

Последний раз редактировалось peq; 20.06.2014 в 13:07.
peq вне форума Ответить с цитированием
Старый 20.06.2014, 15:31   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Правильнее - встать на ячейку и в окне отладки ?selection.formula
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 20.06.2014, 18:05   #5
peq
Форумчанин
 
Регистрация: 01.03.2009
Сообщений: 230
По умолчанию

работает... круто =)
мерси
peq вне форума Ответить с цитированием
Старый 20.06.2014, 23:57   #6
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
а где здесь обозначается, что формула, которая стоит под оператором является формулой массива
функция evaluate это сама определяет - не требуется специально указывать
EducatedFool вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод формул в математическом, а не в строчном виде (Готов заплатить через перевод денег) IZOPGRAM Фриланс 3 16.06.2012 06:22
Перевод формул на язык програмирования (Pascal) spinogryz_ua Помощь студентам 7 16.01.2012 17:51
как сделать так, чтобы при записи макроса имена формул peq Microsoft Office Excel 11 29.10.2010 15:18
Преобразовать дату в текст без формул kipish_lp Microsoft Office Excel 8 11.05.2010 14:38
Перевод формул в макрос valerij Microsoft Office Excel 2 27.11.2007 14:41