|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
26.02.2010, 00:32 | #1 |
Форумчанин
Регистрация: 12.11.2009
Сообщений: 258
|
VBA разобрать формулу Excel (польская нотация)
Нужно проанализировать формулу Excel
произвольного вида например 0.507*( ( B5*B10*B8*B17*( B12+B45 ) )/ (исх!B7*'2'!B21*B23*'2'!B29^2))^(1/4) нужно разобрать ее по действиям для дальнейшей обработки. поиск показал что необходим алгоритм польской нотации. т.е еxcelевскую формулу нужно записать в виде обратной польской (постфиксной) записи кто нибудь видел реализацию на VBA ? Последний раз редактировалось bdfy; 26.02.2010 в 00:37. |
26.02.2010, 01:22 | #2 |
Форумчанин
Регистрация: 17.07.2009
Сообщений: 519
|
Какая дальнейшая обработка планируется?
Почему вопрос задаёте в разделе по MS Word? Алгоритм перевода в обратную польскую нотацию можно найти в куче мест. Например: http://algolist.manual.ru/maths/misc/revpn.php http://ru.wikipedia.org/wiki/%D0%9E%...B8%D1%81%D1%8C Конечно если ещё парсить все виды цифровых констант и функций рабочего листа - будет сложнее. В зависимости от конкретной задачи и конечных целей есть разные варианты |
26.02.2010, 02:21 | #3 | |||
Форумчанин
Регистрация: 12.11.2009
Сообщений: 258
|
Цитата:
Цитата:
т.е было условно говоря =B5/B10 нужно получить =\f(B5;B10) для простых формул уже реализовал через RegEx, но на сложносоставных все некорректно работает. определить порядок скобок через RegEx как то ведь мало реально. алгоритм конечно расписан,но изобретать с нуля велосипед пока не хочется ) вдруг готовые решения есть ? Цитата:
Последний раз редактировалось bdfy; 26.02.2010 в 04:24. |
|||
26.02.2010, 05:04 | #4 |
Форумчанин
Регистрация: 17.07.2009
Сообщений: 519
|
Непонятно - что тогда мешает производить все вычисления в среде
EXCEL. Не надо ничего интерпретировать - надо создать объект EXCEL и в его среде всё вычислить. А затем заполнить документ WORD итоговыми данными. |
26.02.2010, 05:06 | #5 |
Форумчанин
Регистрация: 12.11.2009
Сообщений: 258
|
все вычисления уже выполнены в среде ексель.
нужно сделать по этим расчетам отчет в Word. показав все формулу с промежуточными вычислениями. это возможно только если разобрать формулу екселевскую. |
11.06.2013, 21:24 | #6 |
Регистрация: 02.05.2012
Сообщений: 3
|
У меня есть подобная вещица, правда основная цель моей надстройки разобрать формулу на ссылки на другие диапазоны.
Основной принцип работы надстройки это чтение формулы слева направо, при этом если встречается одинарная ковычка, то впереди идет диапазон, если не открыта двойная ковычка и наоборот если открыта двойная ковычка, то пока она не закроется макрос не реагирует на одинарные ковычки а так же на знаки вычетания, сложения и другие. Если после таких знаков попадается первым символом буква, число или знак доллара, то дальше макрос читает до следуещего знака "действия", если на пути ничего не встретилось вроме чисел и запятых, то это число, если встретилось двоеточие то ... короче там дофига всего )) Весь анализ у меня ушел на строчек 60-100. Но я думаю ты алгоритм поймешь. Вот ссылочка на надстройку: http://yadi.sk/d/eViRFYe55iFXY А если не заблокируют следующую ссылку, то смотри мой блог по этой надстройке: http://www.cyberforum.ru/blogs/275793/blog1086.html |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
VBA Word,VBA Excel решить 2 задачи | fafolo4ka | Фриланс | 6 | 05.03.2012 01:15 |
Обратная польская нотация | Sexy Fox | Помощь студентам | 9 | 22.09.2011 14:57 |
Обратная польская нотация | Izhic | Свободное общение | 17 | 02.10.2009 23:43 |
VBA. Как воткнуть переменную String в формулу? | svetlana_A | Microsoft Office Excel | 3 | 26.05.2009 09:20 |
Обратная польская нотация | Sexy Fox | Помощь студентам | 2 | 22.06.2007 13:27 |