Вычислить формулу, записанную текстом в ячейке Excel |
Опубликовано d.mokshin в ср, 10/07/2013 - 20:01.
|
||
Как вычислить формулу, записанную текстом в ячейке Excel?
Иногда, как ни странно, возникает такая потребность. Когда, например, эта самая формула является результатом каких-то других преобразований (и сама рассчитывается всякими функциями).
Т.е., к примеру, в столбце A последовательно в ячейках есть текст:
1+3
4*6/3
2+6/3
Соответственно в столбце B нужно получить значения:
4
8
4
Вариант 1:
Вроде быть есть пакет надстроек Morefunc, который после установки позволяет использовать функцию EVAL.
Вариант 2:
В VBA есть функция Eval, которая, собственно, выполняет то, что нам нужно. Т.о. можно написать свою публичную функцию (например MyEval), которая будет принимать параметр, скармливать его Eval, и возвращать полученное значение. Затем эту функцию использовать в формулах в столбце B: =MyEval(A1)
Если не хочется связываться с VBA, то есть более изощренный способ ;-) - Макрофункции. Способ почерпнут отсюда: http://www.excelworld.ru/publ/funcs/makrofuncs/makrofuncs/24-1-0-50
Вариант 3 (пример для MS Excel 2003):
Выделяем ячейку B1. Создаем Имя (по Ctrl+F3), например, MyEval. В поле Формула пишем =ВЫЧИСЛИТЬ('Лист1'!A1). Нажимаем Добавить.
Далее в ячейке B1 пишем формулу =MyEval. Нажимаем Enter, любуемся результатом, копируем ячейку B1 вниз для расчета остальных формул.
Тут, конечно, есть особенности - нельзя, например, адресовать произвольную ячейку в качестве аргумента, - но зато не нужно заморачиваться с VBA и дополнительными надстройками. :-)
Последние комментарии
1 год 36 нед. назад
1 год 36 нед. назад
1 год 36 нед. назад
1 год 36 нед. назад
1 год 38 нед. назад
1 год 38 нед. назад
1 год 39 нед. назад
2 гг. 56 min назад
2 гг. 1 день назад
2 гг. 27 нед. назад