| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Аналог функции EVAL (LISP) в Exele

Аналог функции EVAL (LISP) в Exele

Ответ
Поиск в этой теме
Непрочитано 16.03.2006, 18:10 #1
Аналог функции EVAL (LISP) в Exele
kp+
 
идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,090

Есть ли в EXEL аналог лисповской функции EVAL, который позволяет вычислить текстовую строку как формулу?
Т.е. например в ячейке А1 введено (как текст) "2+2", а в ячейке B1 - что-то типа
=EXEL_EVAL(A1),
что в результате должно давать значение, вычисленное по "формуле" из ячейки А1.

А то при расчетах требуют давать расшифровку подставляемых в формулу значений
Например, X=a+b=2+2=5
Просмотров: 8180
 
Автор темы   Непрочитано 13.07.2007, 11:51
#2
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,090


Жизнь заставляет вернуться к старой теме
Кажется, таких функций в Ёкселе нет
Возлагал надежды на функцию ЗНАЧЕН, но не получилось.
Может быть, кто-то встречал на просторах сети макрос, выполняющий эти действия?
Помогите, PLS
kp+ вне форума  
 
Непрочитано 13.07.2007, 12:04
#3
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Если не искать по штатным функциям, то
Код:
[Выделить все]
Function GetFormulaCont(CellAdress As Range)
  GetFormulaCont = CellAdress.FormulaArray
End Function
Но наверняка есть и в штатных...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 13.07.2007, 12:33
#4
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,090


Цитата:
Сообщение от Кулик Алексей aka kpblc
Если не искать по штатным функциям, то
Код:
[Выделить все]
Function GetFormulaCont(CellAdress As Range)
  GetFormulaCont = CellAdress.FormulaArray
End Function
Но наверняка есть и в штатных...
К сожалению, эта функция только вытягивает значение (текстовую строку) из ячейки, заданной в качестве аргумента. Но не вычисляет его как формулу
kp+ вне форума  
 
Автор темы   Непрочитано 15.07.2007, 16:21
#5
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,090


Прошу прощения. Не сразу понял, что делать с этой функцией. Все классно работает! Спасибо!
kp+ вне форума  
 
Автор темы   Непрочитано 26.09.2008, 17:00
#6
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,090


И опять жизнь заставляет вернуться к старой теме
Еще три вопроса:
1) Как поставить функцию GetFormulaCont на автозагрузку в Екселе?
2) можно ли сделать так, чтобы при использовании в формулах ссылок на ячейки функция возвращала не адрес ячейки, а содержимое той ячейки (хотя бы один уровень вложенности)?
3) терпеть не могу EXEL 2007, но не появилось ли в нем такое стандартное средство?
kp+ вне форума  
 
Непрочитано 26.09.2008, 20:42
#7
Красин


 
Регистрация: 05.09.2008
Сообщений: 24


Цитата:
Сообщение от kp+ Посмотреть сообщение
Прошу прощения. Не сразу понял, что делать с этой функцией. Все классно работает! Спасибо!
Дружище, раз уж ты понял, просвети и меня, как ей пользоваться, пожалуйста..
Красин вне форума  
 
Автор темы   Непрочитано 29.09.2008, 14:33
#8
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,090


Красин, все просто.
в ту ячейку, где нужен результат, например, F4 вводишь нужную формулу, типа =2+2
в ту ячейку, где нужна расшифровка (например F5), вводишь =GetFormulaCont(F4).
Исходными данными будет расчетная формула в F4. При изменении в ней изменятся и результат в F4, и расшифровка в F5

А на мои вопросы никто не знает ответа, случайно?
kp+ вне форума  
 
Непрочитано 29.09.2008, 16:29
#9
Красин


 
Регистрация: 05.09.2008
Сообщений: 24


Цитата:
Сообщение от kp+ Посмотреть сообщение
Красин, все просто.
в ту ячейку, где нужен результат, например, F4 вводишь нужную формулу, типа =2+2
в ту ячейку, где нужна расшифровка (например F5), вводишь =GetFormulaCont(F4).
Исходными данными будет расчетная формула в F4. При изменении в ней изменятся и результат в F4, и расшифровка в F5

А на мои вопросы никто не знает ответа, случайно?
Спасибо, я понял как пользоваться. Но я искал как-то формулу-парсер, которая будет принимать текстовые значения типа "5*4+1,2*4^2" и считать результат
А чтобы добавить формулу в автозагрузку, то я где-то читал, что надо сохранить книгу с формулой как xla-надстройку Excel, но подробностей не знаю.

На эту тему есть хороший сайт http://digilander.libero.it/foxes/
я использовал в своих расчетах Class Math Expression Parser - надо импортировать в свой проект модуль класса и обычный модуль кода.
Код:
[Выделить все]
Public Function eval(txt)
    Dim parser As New clsMathParser
    txt = Replace(txt, ",", ".")
    parser.StoreExpression (txt)
    eval = parser.eval()
End Function
вроде все работает, эту формулу я использую совместно со встроенными

Последний раз редактировалось Красин, 29.09.2008 в 16:56.
Красин вне форума  
 
Автор темы   Непрочитано 29.09.2008, 19:34
#10
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,090


Красин, большое спасибо за ответ и интересную ссылку. Все действительно работает
kp+ вне форума  
 
Непрочитано 18.12.2009, 14:28 Чтобы не создавать тему, продолжу эту.
#11
Сергей Дубина


 
Регистрация: 06.04.2009
Сообщений: 705


Нужен код или контрол который позволяет вычислить текстовую строку как формулу, но с оператором " & "
З.Ы.
на VB, т.к. это будет *.exe но не из EXCEL. ScriptControl пробовал, там не катит.
____________________________
прошу прощения, всё работает
__________________
КазнитьØнельзяØпомиловать:eek:

Последний раз редактировалось Сергей Дубина, 18.12.2009 в 14:44. Причина: разобрался
Сергей Дубина вне форума  
 
Непрочитано 01.04.2010, 16:52
#12
Сергей Дубина


 
Регистрация: 06.04.2009
Сообщений: 705


Цитата:
Сообщение от Сергей Дубина Посмотреть сообщение
ScriptControl пробовал, там не катит.
Разобрался, катит, только кавычки добавить надо:
1&"2"
__________________
КазнитьØнельзяØпомиловать:eek:
Сергей Дубина вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Аналог функции EVAL (LISP) в Exele

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск