Как с помощью VBA, активировать формулу которая сформирована с помощью других формул. Пример: Сцепляем формулу; =СЦЕПИТЬ("=";"ВПР";"(";"Лист2!$A$26";";";"2";";";"ЛОЖЬ";" ;) " ;) Визуально получаем: =ВПР(Лист2!$A$26;2;ЛОЖЬ) Но при этом формула заморожена. Как подобные формулы можно приводить в работоспособность с помощью VBA, может есть какое-то функциональное решение? Например: =АКТИВ.ФУНКЦ(СЦЕПИТЬ("=";"ВПР";"(";"Лист2!$A$26";";";"2";";";"ЛОЖЬ";" ;) " ;) ) =АКТИВ.ФУНКЦ() – активировать функцию
В ячейку А1 записывается формула, которая отображается в этой ячейке текстом.
Плюс можно попробовать применить макрофункцию ВЫЧИСЛИТЬ. Но макросы в любом случае должны быть включены. Да и в ту же ячейку формулу записать не получится - только в другие.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Я дал полный код. Осталось его только в тело процедуры запихнуть. Полностью подходящее решение дать нереально, т.к. Вы даже не написали, как видите реализацию перевода формулы в виде текста в ячейке в действительно формулу. То ли только активную ячейку(или все выделенные), то ли определенный диапазон. В той же ячейке или в другое место выводить формулу. И т.д. Вы спросили как - ответ получили. Пробуйте, применяйте. Не получится - пишите, что не получается.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Перевод любого содержимого советующего правильному синтаксису написания формулы в действующую формулу, с помощью функции которая расширена через VBA код.
Ладно, по сути самый приближенный ответ у «The_Prist» за, что ему спасибо большое.
Попробую ещё раз написать, что нужно.
Представим себе, что с помощью формулы =СЦЕПИТЬ, =ВПР, =ДАТА, =ИНДЕКС + ПОИСКПОЗ, =НАЙТИ, =ТЕКС, =СЦЕПИТЬ+ТЕКСТ, =ГПР, или вообще любой другой формулы, или комбинаций этих формул мы получаем замороженную формулу в ячейке. Замороженная формула визуально выглядит вот так:
Нужен макрос по типу, показать Гиперссылку (пример во вложении), Но, чтобы вместо формулы =Get_Hyperlink () Можно было использовать формулу =АКТИВ.ФУНКЦ
В случае из гиперссылкой макрос достаёт адрес URL из ячейки В моем случае макрос должен активировать функционал замороженной формулы.
При этом использование формулы =АКТИВ.ФУНКЦ нужно как и для получения данных из других ячеек, по принципу =АКТИВ.ФУНКЦ(AY1) Так и для использования в текущей ячейке.
Hops Right пишет: The_Prist, у Вас ни в одном сообщении нет знака вопроса? Что Вы имеете ввиду "Ни на один мой вопрос Вы почему-то не ответили.."
Мне всего лишь нужна помощь, причем решение данной задачи, в будущем будет полезным для многих пользователей.
Я, увы не знаю VBA
1. Отсутствие знака вопроса не означает отсутствие самого вопроса. Это как минимум если читать сообщения, а не пробегать по ним глазами исключительно в поисках готового решения. 2. Вам помощь не нужна - её Вам дали. Вам нужно готовое решение, на блюдечке и так, как хочется именно Вам. Ваших попыток решить свою задачу не видать - одни пожелания. 3. Каждый почему-то считает, что решение именно его задачи будет полезно ну многим-многим. Исходя из практики Ваша задача кроме Вас почти(почему почти? я опросов не проводил, чисто предположение, основанное на многолетней практике общения) никому не нужна, ибо непрактична совершенно. Исходя даже из интереса к данной теме других участников напрашивается вывод - задача неинтересна.
Я дал Вам код - почему не используете? Вы даже не попробовали, т.к. не вижу ни одного сообщения от Вас, которое бы повествовало что в коде не так. Функцией делать это более чем проблематично, т.к. VBA не знает про русские имена функций и для вычисления таких функций кодом, без привлечения других ячеек, придется написать тонну кода. По поводу "использования в текущей ячейке" - вообще непрактично и видится мне малореальным именно в таком преподношении. У Вас же в этой ячейке уже другая информация - текстовая. Как Вы собираетесь поместить туда функцию, оставив в ней старый текст?
К тому же я написал про макрофункцию ВЫЧИСЛИТЬ - часть работы она может сделать: Создаете имя, даете ему имя АКТИВ.ФУНКЦ, а в качестве диапазона =ВЫЧИСЛИТЬ(Лист1!A1). При условии, что в А1 текст функции для преобразования(=ВПР(Лист2!$A$26;2;ЛОЖЬ)), а на момент вызова диспетчера имен активная была ячейка В1. Тогда при записи имени АКТИВ.ФУНКЦ в ячейку, расположенную правее ячейки с функцией для преобразования она будет успешно преобразована. Чуть подробнее про применение макрофункции можно почерпнуть из этой статьи(на примере другой макрофункции): http://www.excel-vba.ru/chto-umeet-excel/kak-uznat-est-li-formula-v-yachejke/
Не знаете VBA - самое время значит начать изучать. Все с чего-то начинали.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Ваша проблема, с уверенностью близкой к 100%, решается другими действительно более рациональными способами. Возможно вы считаете, что придуманное Вами есть самы лучший вариант, боюсь вас огорчить. Если вам действительно нужна помощь, лучше объясните для чего вы это собирались применять, потому как объяснение
Цитата
Нужен для оперативного решения рабочих задач.
явно не хватает для понимания проблемы. Если же мысль о том, что вы придумали нечто "гениальное" до чего ещё ни кто не додумался вас не покидает, и вы не хотите с ней расставаться, тогда удачи в поисках и не очень огорчайтесь если они ни чем не закончатся.
"за раннее" извиняюсь за некоторую резкость выражений.
Hops Right, Вы вообще адекватны? Вам The_Prist расписал всё по полочкам, Вам LVL не сказал ни одного лишнего слова (я про пост #17), и выразился очень корректно на Ваши странные "хотелки" и "неотвечалки"... В ответ услышать
Цитата
Hops Right пишет: Ясно, понятно, приятно, вкусно
и
Цитата
Hops Right пишет: Вода, наше всё!
- это, знаете ли, хамство.
"Расширять" Excel хотят многие. Испортить хорошую вещь - много ума не надо. Но, может быть, прежде чем начать "улучшать" и "расширять", даря благодарному человечеству ненужные ему "улучшалки", нужно сначала хотя бы изучить то, что в Excel уже есть? Добрая часть самолепных "улучшалок" - от простого незнания и повышенных амбиций. Ну и судьба у них - соответствующая.
пс. Вопросы в этом посте, само собой, риторические. ппс. "Удачи" желать не буду - она у вас есть, в двух экземплярах, от LVL.
Доброго времени суток, форумчане! Нашёл эту тему по поиску. Но мою проблему - не решила: имею ячейки, в которых есть значения типа *1,2 или *1,15 или /1,18 Через функцию СЦЕПИТЬ получаю ячейки с содержимым =1*1,2 или =1*1,15 или =1/1,18
Далее мне нужно получить значение этих ячеек, по совету из темы применяю: ActiveCell.FormulaLocal = ActiveCell.Text Так как мне надо для группы ячеек заменил на:
Но вот какая фигня - для группы из 3-х ячеек с одинаковым значением (например =1*1,2) - эта операция проходит; Если в группу попадает другое значение (например =1) - операция не действует.
написал: Я еще в первом сообщении дал ответ - попробовать не судьба? Приведенный мной код "активирует" формулу, записанную как текст в ячейке.
Код
[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/
Чтобы "активировать" формулы, которые написаны в ячейку корректно с точки зрения грамматики, последовательности аргументов и функций и стоят как текст: Ctrl+H Заменить "=" на "="
Всем добрый день! Вопрос по теме, но предложенные выше варианты к сожалению не подходят. В общем, есть столбец с формулами, в 2000 ячеек, формулы в них отображаются как текст, данные формулы ссылаются на внешние источники, которые меняются в конечной папке, соответственно ни все файлы из перечня формул есть в папке, и при преобразовании этих формул из текста в активную формулу, появляется окно которое предлагает указать путь к прописанному в формуле файлу. Ctrl+H Заменить "=" на "=" не подходит т.к. вылетает окно с запросом пути, я сейчас это делаю через F2-Enter-esc, самый оптимальный способ, но муторно. Выше перечисленные макросы тоже не подходят. Как этот процесс автоматизировать макросом?