Как с помощью VBA, активировать формулу которая сформирована с помощью других формул. Пример: Сцепляем формулу; =СЦЕПИТЬ("=";"ВПР";"(";"Лист2!$A$26";";";"2";";";"ЛОЖЬ";" ;) " ;) Визуально получаем: =ВПР(Лист2!$A$26;2;ЛОЖЬ) Но при этом формула заморожена. Как подобные формулы можно приводить в работоспособность с помощью VBA, может есть какое-то функциональное решение? Например: =АКТИВ.ФУНКЦ(СЦЕПИТЬ("=";"ВПР";"(";"Лист2!$A$26";";";"2";";";"ЛОЖЬ";" ;) " ;) ) =АКТИВ.ФУНКЦ() – активировать функцию
Спасибо большое за помощь
Изменено: - 01.07.2013 11:43:41
Модератор
Сообщений: Регистрация: 10.01.2013
01.07.2013 11:42:53
Извиняюсь, а не подскажите для чего такой функционал?
Согласие есть продукт при полном непротивлении сторон
Пользователь
Сообщений: Регистрация: 25.12.2012
01.07.2013 11:44:43
Нужен для оперативного решения рабочих задач.
Пользователь
Сообщений: Регистрация: 01.01.1970
01.07.2013 11:47:30
Думается проблема в другом, сомневаюсь что поможет
Цитата
для оперативного решения рабочих задач
Пользователь
Сообщений: Регистрация: 15.09.2012
Профессиональная разработка приложений для MS Office
01.07.2013 11:50:57
Код
Cells(1,1).FormulaLocal = Cells(1,1).Text
В ячейку А1 записывается формула, которая отображается в этой ячейке текстом.
Плюс можно попробовать применить макрофункцию ВЫЧИСЛИТЬ. Но макросы в любом случае должны быть включены. Да и в ту же ячейку формулу записать не получится - только в другие.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Модератор
Сообщений: Регистрация: 10.01.2013
01.07.2013 11:51:25
Цитата
с помощью VBA......для оперативного решения рабочих задач
можно и без формул обойтись
Согласие есть продукт при полном непротивлении сторон
Пользователь
Сообщений: Регистрация: 25.12.2012
01.07.2013 12:22:50
Может у Вас есть код, для решения моей задачи. Мне нужен именно код, который расширяет возможности формул. Формулу =АКТИВ.ФУНКЦ()
Я хотел бы использовать, как и все остальные полноценно и постоянно.
Пользователь
Сообщений: Регистрация: 15.09.2012
Профессиональная разработка приложений для MS Office
01.07.2013 12:47:52
Я дал полный код. Осталось его только в тело процедуры запихнуть. Полностью подходящее решение дать нереально, т.к. Вы даже не написали, как видите реализацию перевода формулы в виде текста в ячейке в действительно формулу. То ли только активную ячейку(или все выделенные), то ли определенный диапазон. В той же ячейке или в другое место выводить формулу. И т.д. Вы спросили как - ответ получили. Пробуйте, применяйте. Не получится - пишите, что не получается.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пользователь
Сообщений: Регистрация: 25.12.2012
01.07.2013 12:53:47
Перевод любого содержимого советующего правильному синтаксису написания формулы в действующую формулу, с помощью функции которая расширена через VBA код.
представьте себе проверку синтаксиса ВСЕ ВОЗМОЖНЫХ формул Жесть! Мне представляется это тупиковым направлением. ИМХО
Согласие есть продукт при полном непротивлении сторон
Пользователь
Сообщений: Регистрация: 25.12.2012
01.07.2013 14:10:05
Ладно, по сути самый приближенный ответ у «The_Prist» за, что ему спасибо большое.
Попробую ещё раз написать, что нужно.
Представим себе, что с помощью формулы =СЦЕПИТЬ, =ВПР, =ДАТА, =ИНДЕКС + ПОИСКПОЗ, =НАЙТИ, =ТЕКС, =СЦЕПИТЬ+ТЕКСТ, =ГПР, или вообще любой другой формулы, или комбинаций этих формул мы получаем замороженную формулу в ячейке. Замороженная формула визуально выглядит вот так:
Но ботает только формула =СЦЕПИТЬ, а то что мы получили в результате, назовём это замороженной формулой не работает.
Подскажите пожалуйста макрос, с помощью которого можно использовать формулу для активации замороженных формул полученных независимо каким путём.
Если активировать замороженную формулу не удалось по причине ёё неправильного формирования, то можно просто вывести «#Н/Д»
Спасибо
Пользователь
Сообщений: Регистрация: 15.09.2012
Профессиональная разработка приложений для MS Office
01.07.2013 14:16:03
Я еще в первом сообщении дал ответ - попробовать не судьба? Приведенный мной код "активирует" формулу, записанную как текст в ячейке.
Код
Sub ActivateFormula()
ActiveCell.FormulaLocal = ActiveCell.Text
End Sub
Вставляете этот код в модуль. Выделяете ячейку, в которой формула записана как текст и выполняете этот код. Любуетесь результатом.
P.S. Ни на один мой вопрос Вы почему-то не ответили...Поэтому более тема неинтересна.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пользователь
Сообщений: Регистрация: 25.12.2012
01.07.2013 14:38:30
Нужен макрос по типу, показать Гиперссылку (пример во вложении), Но, чтобы вместо формулы =Get_Hyperlink () Можно было использовать формулу =АКТИВ.ФУНКЦ
В случае из гиперссылкой макрос достаёт адрес URL из ячейки В моем случае макрос должен активировать функционал замороженной формулы.
При этом использование формулы =АКТИВ.ФУНКЦ нужно как и для получения данных из других ячеек, по принципу =АКТИВ.ФУНКЦ(AY1) Так и для использования в текущей ячейке.
The_Prist, у Вас ни в одном сообщении нет знака вопроса? Что Вы имеете ввиду "Ни на один мой вопрос Вы почему-то не ответили.."
Мне всего лишь нужна помощь, причем решение данной задачи, в будущем будет полезным для многих пользователей.
Я, увы не знаю VBA
Пользователь
Сообщений: Регистрация: 15.09.2012
Профессиональная разработка приложений для MS Office
02.07.2013 01:47:57
Цитата
Hops Right пишет: The_Prist, у Вас ни в одном сообщении нет знака вопроса? Что Вы имеете ввиду "Ни на один мой вопрос Вы почему-то не ответили.."
Мне всего лишь нужна помощь, причем решение данной задачи, в будущем будет полезным для многих пользователей.
Я, увы не знаю VBA
1. Отсутствие знака вопроса не означает отсутствие самого вопроса. Это как минимум если читать сообщения, а не пробегать по ним глазами исключительно в поисках готового решения. 2. Вам помощь не нужна - её Вам дали. Вам нужно готовое решение, на блюдечке и так, как хочется именно Вам. Ваших попыток решить свою задачу не видать - одни пожелания. 3. Каждый почему-то считает, что решение именно его задачи будет полезно ну многим-многим. Исходя из практики Ваша задача кроме Вас почти(почему почти? я опросов не проводил, чисто предположение, основанное на многолетней практике общения) никому не нужна, ибо непрактична совершенно. Исходя даже из интереса к данной теме других участников напрашивается вывод - задача неинтересна.
Я дал Вам код - почему не используете? Вы даже не попробовали, т.к. не вижу ни одного сообщения от Вас, которое бы повествовало что в коде не так. Функцией делать это более чем проблематично, т.к. VBA не знает про русские имена функций и для вычисления таких функций кодом, без привлечения других ячеек, придется написать тонну кода. По поводу "использования в текущей ячейке" - вообще непрактично и видится мне малореальным именно в таком преподношении. У Вас же в этой ячейке уже другая информация - текстовая. Как Вы собираетесь поместить туда функцию, оставив в ней старый текст?
К тому же я написал про макрофункцию ВЫЧИСЛИТЬ - часть работы она может сделать: Создаете имя, даете ему имя АКТИВ.ФУНКЦ, а в качестве диапазона =ВЫЧИСЛИТЬ(Лист1!A1). При условии, что в А1 текст функции для преобразования(=ВПР(Лист2!$A$26;2;ЛОЖЬ)), а на момент вызова диспетчера имен активная была ячейка В1. Тогда при записи имени АКТИВ.ФУНКЦ в ячейку, расположенную правее ячейки с функцией для преобразования она будет успешно преобразована. Чуть подробнее про применение макрофункции можно почерпнуть из этой статьи(на примере другой макрофункции):
Не знаете VBA - самое время значит начать изучать. Все с чего-то начинали.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пользователь
Сообщений: Регистрация: 25.12.2012
03.07.2013 10:46:16
Ясно, понятно, приятно, вкусно
Не верю в то, что никто и никогда не стыкался с подобной задачей.
Спасибо большое
Пользователь
Сообщений: Регистрация: 01.01.1970
03.07.2013 11:06:45
Ваша проблема, с уверенностью близкой к 100%, решается другими действительно более рациональными способами. Возможно вы считаете, что придуманное Вами есть самы лучший вариант, боюсь вас огорчить. Если вам действительно нужна помощь, лучше объясните для чего вы это собирались применять, потому как объяснение
Цитата
Нужен для оперативного решения рабочих задач.
явно не хватает для понимания проблемы. Если же мысль о том, что вы придумали нечто "гениальное" до чего ещё ни кто не додумался вас не покидает, и вы не хотите с ней расставаться, тогда удачи в поисках и не очень огорчайтесь если они ни чем не закончатся.
Пользователь
Сообщений: Регистрация: 25.12.2012
03.07.2013 11:52:30
Вода, наше всё!
Пользователь
Сообщений: Регистрация: 01.01.1970
03.07.2013 11:53:54
Цитата
Hops Right пишет: Вода, наше всё!
Цитата
LVL пишет: удачи в поисках и не очень огорчайтесь если они ни чем не закончатся
Пользователь
Сообщений: Регистрация: 22.12.2012
04.07.2013 04:42:50
"за раннее" извиняюсь за некоторую резкость выражений.
Hops Right, Вы вообще адекватны? Вам The_Prist расписал всё по полочкам, Вам LVL не сказал ни одного лишнего слова (я про пост #17), и выразился очень корректно на Ваши странные "хотелки" и "неотвечалки"... В ответ услышать
Цитата
Hops Right пишет: Ясно, понятно, приятно, вкусно
и
Цитата
Hops Right пишет: Вода, наше всё!
- это, знаете ли, хамство.
"Расширять" Excel хотят многие. Испортить хорошую вещь - много ума не надо. Но, может быть, прежде чем начать "улучшать" и "расширять", даря благодарному человечеству ненужные ему "улучшалки", нужно сначала хотя бы изучить то, что в Excel уже есть? Добрая часть самолепных "улучшалок" - от простого незнания и повышенных амбиций. Ну и судьба у них - соответствующая.
пс. Вопросы в этом посте, само собой, риторические. ппс. "Удачи" желать не буду - она у вас есть, в двух экземплярах, от LVL.
Изменено: - 04.07.2013 04:44:49
фрилансер Excel, VBA - контакты в "Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
Пользователь
Сообщений: Регистрация: 06.09.2013
06.09.2013 20:45:41
Доброго времени суток, форумчане! Нашёл эту тему по поиску. Но мою проблему - не решила: имею ячейки, в которых есть значения типа *1,2 или *1,15 или /1,18 Через функцию СЦЕПИТЬ получаю ячейки с содержимым =1*1,2 или =1*1,15 или =1/1,18
Далее мне нужно получить значение этих ячеек, по совету из темы применяю: ActiveCell.FormulaLocal = ActiveCell.Text Так как мне надо для группы ячеек заменил на:
Но вот какая фигня - для группы из 3-х ячеек с одинаковым значением (например =1*1,2) - эта операция проходит; Если в группу попадает другое значение (например =1) - операция не действует.
Alex13777 пишет: помощью которого можно использовать форму
Вам поможет формула =EVAL, которая доступна с расширением morefunc Видео о том, как работает формула: Ссылка для скачивания Morefunc:
После установки, нужно зайти на вкладку разрабочик - Надстройки - Обзор... - зайти в папку с установленной надстройкой и выбрать все 3 файла.
Удачи Вам
Пользователь
Сообщений: Регистрация: 01.01.1970
19.04.2023 09:16:42
Цитата
написал: Я еще в первом сообщении дал ответ - попробовать не судьба? Приведенный мной код "активирует" формулу, записанную как текст в ячейке.
Код
[URL=#]?[/URL] 1 2 3 Sub ActivateFormula() ActiveCell.FormulaLocal = ActiveCell.Text End Sub
Вставляете этот код в модуль. Выделяете ячейку, в которой формула записана как текст и выполняете этот код. Любуетесь результатом.
P.S. Ни на один мой вопрос Вы почему-то не ответили...Поэтому более тема неинтересна.
Огромное спасибо! Очень помогли.
Перебор строчек для активации текста в формулу Если прописана формула как текст как активировать формулу
Собрал формулу гиперссылки из разных ячеек через функцию СЦЕПИТЬ, заменил формулу как значение, затем что бы активировать получившуюся гиперссылку в 2646 строчках прошелся макросом используя Ваш совет активации формулы.
Получилось для столбца "D" , он же четвертый вот так.
Код
Sub ActivateFormula()
For i = 1 To 2646
' ActiveCell.FormulaLocal = ActiveCell.Text
Cells(i, 4).FormulaLocal = Cells(i, 4).Text
Next i
MsgBox "Готово"
End Sub
Возможно кому-то тоже пригодится. Еще раз спасибо.
Активации формул с помощью VBA на просторах интернета так и не нашел, как всегда выручает planetaexcel/
Пользователь
Сообщений: Регистрация: 15.01.2016
Excel 365
19.04.2023 09:29:36
Чтобы "активировать" формулы, которые написаны в ячейку корректно с точки зрения грамматики, последовательности аргументов и функций и стоят как текст: Ctrl+H Заменить "=" на "="
Пользователь
Сообщений: Регистрация: 18.12.2019
06.04.2024 21:14:51
Всем добрый день! Вопрос по теме, но предложенные выше варианты к сожалению не подходят. В общем, есть столбец с формулами, в 2000 ячеек, формулы в них отображаются как текст, данные формулы ссылаются на внешние источники, которые меняются в конечной папке, соответственно ни все файлы из перечня формул есть в папке, и при преобразовании этих формул из текста в активную формулу, появляется окно которое предлагает указать путь к прописанному в формуле файлу. Ctrl+H Заменить "=" на "=" не подходит т.к. вылетает окно с запросом пути, я сейчас это делаю через F2-Enter-esc, самый оптимальный способ, но муторно. Выше перечисленные макросы тоже не подходят. Как этот процесс автоматизировать макросом?