|
2 / 2 / 1
Регистрация: 01.03.2020
Сообщений: 72
|
||||||
Excel Преобразование текста в формулу Excel21.01.2021, 18:32. Показов 5935. Ответов 10
Метки нет (Все метки)
Всем здравствуйте. Имеется пользовательская функция UDF для преобразования формульного текста в формулу и последующего вычисления ее значения с помощью команды Evaluate(text). Она успешно справляется с текстом "А1+В2" возвращая в ячейку, содержащую данную функцию, значение суммы этих ячеек. Однако, данная UDF не коем образом не обрабатывает такой формульный текст , если бы он содержал еще и какие либо екселевские функции, например, даже то же по смыслу выражение "СУММ(А1; В2)" у функции вычислить не удается. Подскажите, чем возможно дополнить или заменить Evaluate(text) для решения данной задачки.
Ниже прикрепляю пользовательскую UDF, о которой идет речь в посте. Всем заранее спасибо ![]()
0
|
||||||
| 21.01.2021, 18:32 | |
|
Ответы с готовыми решениями:
10
Преобразование текста в формулу Excel VBA (UDF) Преобразование текста в ячейке в формулу.
|
|
малоболт
1328 / 510 / 213
Регистрация: 30.01.2020
Сообщений: 1,244
|
||
| 21.01.2021, 20:04 | ||
|
Скорее всего вам в этом случае придётся писать самостоятельный анализатор-преобразователь строк в функционал. Возможно использовать некоторую пустую ячейку, типа ZA1, временно записывая Cells(1,"ZZ").FormulaLocal = "=(здесь ваша строка)", а потом брать полученное значение и возвращать в качестве реультата функции. Но перед этим надо будет всё равно проанализировать строку, приведя координаты ячеек из относительного синтаксиса к абсолютному. В этом случае самый простой выход для данной UDF: сохранить куда-нибудь формулу из текущей ячейки, вставить на её место рассматриваемую строку со стандартными функциями, отключить отображение изменений, выполнить метод Calculate для данной ячейки, Взять значение и вернуть в качестве результата расчёта в данную ячейку, вернув перед этим формулу и включив отображение результатов расчёта. Смысла корячиться нет совершенно. Ставьте формулу с участием стандартных функций прямо в формулу ячейки. Чего нет в стандартных - реализуйте через UDF и добавляйте в ту же формулу. Если формула получается длинной, сложной или корявой - пишите макрос для расчёта, или UDF с полноценной логикой.
1
|
||
|
859 / 509 / 187
Регистрация: 09.03.2009
Сообщений: 1,727
|
|
| 21.01.2021, 20:10 | |
Сообщение было отмечено Inna1998 как решение
Решение
Для функций нужно их именование английским вариантом и c заменой точек с запятой на запятую, то есть для СУММ(A1; B2) надо подать на вход Evaluate текст SUM(A1, B2). Не знаю, можно ли тут ссылки на сторонние ресурсы помещать. Если нет, в личке или погуглите computergaga, хорошее описание Evaluate.
1
|
|
|
2 / 2 / 1
Регистрация: 01.03.2020
Сообщений: 72
|
|
| 21.01.2021, 20:58 [ТС] | |
|
Zeag, да так заработало, спасибо огромное. Осталось только реализовать перевод с русских функций на английский(без замены их визуально на листе на таковые конечно, а исключительно в теле пользовательской UDF при работе с тем или иным русским! формульным текстом). Печально, что в английской версии функции, помимо перевода слова, еще имеют отличия в разделителях, а возможно где то и не имеют и тогда вобще невозможно быстро осуществить легко таковой транслит, имея просто массив соответствия рус-en). Но excel, я думаю, что влюбом случае каков бы не был пользовательский язык переводит все и сам на английский.. И где то это есть в нем внутри.. Осталось определить это место..
0
|
|
|
малоболт
1328 / 510 / 213
Регистрация: 30.01.2020
Сообщений: 1,244
|
||||||||||||
| 21.01.2021, 21:29 | ||||||||||||
0
|
||||||||||||
|
859 / 509 / 187
Регистрация: 09.03.2009
Сообщений: 1,727
|
|||||||
| 21.01.2021, 21:40 | |||||||
|
Inna1998,
0
|
|||||||
|
2 / 2 / 1
Регистрация: 01.03.2020
Сообщений: 72
|
|
| 21.01.2021, 21:46 [ТС] | |
|
Punkt5, это возможно писать именно в теле кода Function (перевод в formulalocal) или же это надо в макросе Sub и его вызывать потом как то из Function? Спасибо
0
|
|
|
малоболт
1328 / 510 / 213
Регистрация: 30.01.2020
Сообщений: 1,244
|
|||||||
| 21.01.2021, 21:52 | |||||||
0
|
|||||||
|
2 / 2 / 1
Регистрация: 01.03.2020
Сообщений: 72
|
|
| 21.01.2021, 21:53 [ТС] | |
|
Насколько я правильно понимаю UDF не может работать с какими либо другими ячейками excel (кроме той в которой она применена и записана) и делать с ними какие либо операции пусть даже и для собственных вычислений. Или я не права. Тогда поправьте пожалуйста, буду признательна в этом
0
|
|
|
малоболт
1328 / 510 / 213
Регистрация: 30.01.2020
Сообщений: 1,244
|
||
| 21.01.2021, 22:13 | ||
|
1
|
||
|
2 / 2 / 1
Регистрация: 01.03.2020
Сообщений: 72
|
|
| 21.01.2021, 22:25 [ТС] | |
|
Да, я уже тоже и на Range("BB5") пыталась заменить просто [BB5] и через cells() .formula, но что то не хочет работать (ошибка #ЗНАЧ!). В любом случае спасибо большое, что обратили внимание на мои вопросы. Будем ждать, если еще кто то подскажет , если возможно все таки UDF как то с переводом на английский язык русского формульного текста, для последующего преобразования Evaluate(text), где требуется формульный текст в английском формате переписан чтобы был
0
|
|
| 21.01.2021, 22:25 | |
|
Помогаю со студенческими работами здесь
11
Преобразование текста MS Office Word в таблицу Excel Преобразование String в формулу
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
|
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2.
Данный документ берёт данные из другого нетипового документа. . .
|
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
|
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать программный контроль на предмет проведения документа. . .
|
|
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача:
1. Реализовать контроль заполнения реквизита. . .
|
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение:
DISM / Online / Add-Capability / CapabilityName:WMIC~~~~
Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
|
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: при создании документов установить период списания автоматически. . .
|
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2.
Задача: вывести данные из ТЧ нетипового документа. . .
|