Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Преобразование формулы в строковый вид - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Преобразование формулы в строковый вид
Laryx Дата: Вторник, 21.05.2013, 10:06 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Всех приветствую !

Такая задача: Надо, чтобы функция брала формулу из ячейки, и возвращала строку с этой формулой.

Написал:

[vba]
Код

Function TextFormula(r As Range) As String
TextFormula = ""
If r.Value <> "" Then TextFormula = r.Formula
End Function
[/vba]

Работает, и возвращает ссылки вместо значений.
Скажем, "=Лист1!А1+Лист2!А2"

Но вот второй шаг - никак не могу понять, как сделать.
Надо заменить в формуле эти ссылки конкретными значениями.

Чтобы в итоге получилось "=1+2"

Что порекомендуете, друзья ?
 
Ответить
СообщениеВсех приветствую !

Такая задача: Надо, чтобы функция брала формулу из ячейки, и возвращала строку с этой формулой.

Написал:

[vba]
Код

Function TextFormula(r As Range) As String
TextFormula = ""
If r.Value <> "" Then TextFormula = r.Formula
End Function
[/vba]

Работает, и возвращает ссылки вместо значений.
Скажем, "=Лист1!А1+Лист2!А2"

Но вот второй шаг - никак не могу понять, как сделать.
Надо заменить в формуле эти ссылки конкретными значениями.

Чтобы в итоге получилось "=1+2"

Что порекомендуете, друзья ?

Автор - Laryx
Дата добавления - 21.05.2013 в 10:06
AndreTM Дата: Вторник, 21.05.2013, 10:46 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 501 ±
Замечаний: 0% ±

2003 & 2010
Порекомендуем вот это.
Только учтите, что скрипт разворачивает до значений всю формулу, включая вложенные ссылки. То есть вы получаете именно формулу с исходными данными.


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
СообщениеПорекомендуем вот это.
Только учтите, что скрипт разворачивает до значений всю формулу, включая вложенные ссылки. То есть вы получаете именно формулу с исходными данными.

Автор - AndreTM
Дата добавления - 21.05.2013 в 10:46
Laryx Дата: Вторник, 21.05.2013, 11:19 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

AndreTM, Вау !!! Да, это то, что нужно.

Все там работает именно так, как я и хочу.

Единственное - мне нужна именно функция, в которую я бы передавал Range-одну ячейку с формулой, чтобы я просто ее забивал эту функцию в нужную ячейку, и там появлялась строка, которая в вашем примере появляется в виде комментария.

Ну, да допилить приведенную функцию - уже, думаю, смогу.
Не ожидал, что понадобится такая серьезная работа...

Премного благодарен.
 
Ответить
СообщениеAndreTM, Вау !!! Да, это то, что нужно.

Все там работает именно так, как я и хочу.

Единственное - мне нужна именно функция, в которую я бы передавал Range-одну ячейку с формулой, чтобы я просто ее забивал эту функцию в нужную ячейку, и там появлялась строка, которая в вашем примере появляется в виде комментария.

Ну, да допилить приведенную функцию - уже, думаю, смогу.
Не ожидал, что понадобится такая серьезная работа...

Премного благодарен.

Автор - Laryx
Дата добавления - 21.05.2013 в 11:19
AndreTM Дата: Вторник, 21.05.2013, 14:10 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 501 ±
Замечаний: 0% ±

2003 & 2010
Допиливать там придется много, поскольку код - процедура, работает в копии и использует Tracer.
Поэтому использовать как функцию листа вряд ли получится.

С другой стороны, а зачем нужна именно функция? - вышеприведенный код вполне может работать не только с одной ячейкой, но и с диапазоном. И вся ваша задача сводится к:
- сделать вместо записи значения прямо в функции - возврат строки в процедуру
- изменить процедуру так, чтобы полученные строки раскидывались по нужным вам результирующим ячейкам


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
СообщениеДопиливать там придется много, поскольку код - процедура, работает в копии и использует Tracer.
Поэтому использовать как функцию листа вряд ли получится.

С другой стороны, а зачем нужна именно функция? - вышеприведенный код вполне может работать не только с одной ячейкой, но и с диапазоном. И вся ваша задача сводится к:
- сделать вместо записи значения прямо в функции - возврат строки в процедуру
- изменить процедуру так, чтобы полученные строки раскидывались по нужным вам результирующим ячейкам

Автор - AndreTM
Дата добавления - 21.05.2013 в 14:10
ostrov127 Дата: Пятница, 05.07.2013, 18:08 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 1
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Этот код не всегда работает правильно. Пример тут.
 
Ответить
СообщениеЭтот код не всегда работает правильно. Пример тут.

Автор - ostrov127
Дата добавления - 05.07.2013 в 18:08
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!