Как заставить записанную текстом формулу работать в другой ячейке без макроса?

Автор bmg33, 20 сентября 2016, 19:46

0 Пользователи и 1 гость просматривают эту тему.

bmg33

Здравствуйте, уважаемые!

У меня мелкий вопросик, который не дает мне покоя, потому что не могу найти его решение и поэтому прошу помощи у вас.

Итак. В столбцах А1:А50000 записаны формулы, которые не выполняются, а просто являются текстом. В контексте вопроса не важно как это случилось, или формат "текст" стоит в ячейках, или формулы вписаны без знака равно впереди или просто были возвращены функцией formula().
Моя задача состоит в том, чтобы в ячейках B1:B50000 были вписаны эти же самые формулы, но которые бы исполнялись (т.е. все функции работали, математические операции совершались и т.д.). Задача именно заставить формулы вычислять и именно в другой ячейке с сохранением ссылочной целостности с А1:А50000 так, чтобы если в ячейке А5 формула изменилась, то точно также она изменилась в ячейке В5.
Я конечно могу просто скопировать результат, вставить его в блокнот, а потом сновать внести в ячейки столбца В, но тогда прервется ссылочная целостность и при изменении формул в столбце А, придется операцию проводить снова вручную, что рано или поздно обязательно приведет к ошибкам.

Не знаю, имеет ли поставленная передо мной задача решения, но если имеет, то я подозреваю, решается одной функцией.
Нижним полушарием мозга понимаю, что это что-то вроде реверс-функции FORMAT(), но не могу найти нужную, а может быть ее и не существует вовсе.


economist

Копать надо в сторону UDF на Бэйсике с парой важных строк совместимости с МИФ. Имхо без макросов - никак. Правда еще есть =INDIRECT(), превращающий текст в ссылку и формулу. В Excel =ДВССЫЛ() довольно полезен, но требует открытия файлов-связей.
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

bmg33

Цитата: economist от 20 сентября 2016, 20:10
Копать надо в сторону UDF на Бэйсике с парой важных строк совместимости с МИФ. Имхо без макросов - никак. Правда еще есть =INDIRECT(), превращающий текст в ссылку и формулу. В Excel =ДВССЫЛ() довольно полезен, но требует открытия файлов-связей.
Спасибо за помощь. Попробовал, но не получается превратить текст в формулу с функцией INDIRECT, она почему-то возвращает ту же формулу, что и была записана в целевую ячейку. Исполнять функцию из ячейки А1 она не хочет. Но сейчас буду думать, может быть что-то не понимаю.


bmg33

Цитата: rami от 20 сентября 2016, 20:53
Образец покажете?
Да конечно, извиняюсь, что сразу не сообразил.

--
Я понимаю, что в примере, можно просто выбрать диапазон формул из столбца C мышкой, вставить все в блокнот, а из блокнота скопировать в столбец D. Тогда в  него вставятся именно формулы и эти формулы будут работать. И все бы хорошо, но формулы из столбца А меняются, и тогда придется вручную делать этот транзитный копи-паст каждый раз.

Если проблема не имеет решения, буду придумывать что-то иное тогда. Ну мало ли, вдруг есть какая-то чудо-функция реверс-formula(), о которой я просто не знаю.

bmg33

Если я не совсем понятно объясняюсь, то вот пример, где я просто вписал выдуманную функцию, так словно она существует и делает то, что мне нужно.

rami

Цитата: bmg33 от 20 сентября 2016, 21:19
Если я не совсем понятно объясняюсь, то вот пример, где я просто вписал выдуманную функцию, так словно она существует и делает то, что мне нужно.
Было просто не понятно, а стало сложно не понятно ;D ;D ;D

Превратить формулу записанную как текст в "настоящую" формулу можно так:
1. в ячейку D1 запишите формулу =C1 и растяните вниз сколько нужно
2. выделите эти ячейки (в столбце D) и откройте "Найти и заменить"
3. найти: (точка и плюс)
4. заменить: (амперсанд)
5. другие параметры как на картинке:

bmg33

rami, спасибо большое, что откликнулись. Как сделать то, что вы описали, но несколько другими способами, я знаю.
Но к сожалению, этот способ не подходит - время от времени формулы в ячейках А1...А50000 меняются и за ними должны меняться и формулы в ячейках D1...D50000 (а при таком решении они статичны).

Видимо проблема все-таки не имеет простого решения, поэтому буду придумывать какой-то иной алгоритм достижения результата, а не через подмену части формулы :) Если не придумаю, решусь на макросы.
Еще раз спасибо всем, кто откликнулся. Добра вам и вашим домам.

JohnSUN

Знаешь, bmg33, а я, кажется, уже приноровился к твоему способу задавать вопросы.
Когда ты прямо в заголовке темы употребляешь оборот "... без макроса", а потом в текстах сообщений об этом и не вспоминаешь, то, скорее всего, изначально имелось в виду "...но пользователь книги не должен запускать никаких макросов ни кнопками, ни из меню, ни горячими клавишами, а то эти старые дуры мне назапускают - ни книги, ни калка, ни компьютера не найдёшь!"
И если я не ошибаюсь, всё это именно так и ты не возражаешь против макросов вообще, то получи решение
Ну, а нет - так нет... В смысле "без макроса Calc это пока делать не умеет"

(PS. Для начала измени какую-нибудь из формул в колонке A)
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

bormant

А нельзя поставить телегу позади лошади, в ячейку вводить формулы, а содержимое их отображать по FORMULA()?
Автору на яд. Поддержать форум.

JohnSUN

Да у него там какая задумка была - выдрать из ячейки рабочую формулу, каким-то образом с помощью функций обработки текста их модифицировать и, в конце концов, увидеть результат преобразований в виде вычисленных значений...
То есть, это твоё предложение
Цитата: bormant от 21 сентября 2016, 12:49
в ячейку вводить формулы, а содержимое их отображать по FORMULA()?
уже сделано в колонках A-B... В колонке C - мягкое демо-преобразование текста полученной формулы... Затык был с вычислением этой новой формулы в колонке D
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне