Страницы: 1
RSS
Преобразование формулы в текст
 
Ребята, а вы не подскажете, как мне из формулы сделать текстовое значение? Иными словами в ячейку А3 забито =А1+А2, что дает результат например 5. Мне же нужна формула, которая, ссылаясь на ячейку А3 выдавала бы результат "А1+А2" (тестом).
 
Сумма прописью?
 
Не понял вопроса. Какая сумма? При чем тут пропись?  
 
Да, только сейчас обнаружил опечатку - последнее слово в моем прошлом посте - не "тестом", а "текстом", естественно :)
 
Просто очень часто в бухгалтерии необходимо число - прописью. Если это денежные единицы, в файле.  
ЗЫ по учету рабочего времени  не Ваш вопрос был? Посторался что-то сделать.
 
Не не не... К сумме прописью это не имеет отношения. Постарался описать точнее в файле.
 
Igor, ему просто нужно в какой-либо ячейке получить текст, который отображается в строке формул для ячейки А3. Так я понял суть его вопроса.
 
это решается простой пользовательской функцией
 
Лузер  
Буду вам очень благодарен, если вы скажете, как эту функцию написать.
 
Не думаю, что эту задачу можно решить простой пользовательской функцией. У меня такое впечатление, что и непростой пользовательской функцией эта задача не решается. Во всяком случае, я не смог этого сделать.  
А вот макросом это возможно. Посмотрите прикрепленный файл.  
С уважением, Александр.
 
{quote}{login=Sh_Alex}{date=16.03.2008 05:48}{thema=Преобразование формулы в текст}{post}Не думаю, что эту задачу можно решить простой пользовательской функцией. У меня такое впечатление, что и непростой пользовательской функцией эта задача не решается. Во всяком случае, я не смог этого сделать.  
А вот макросом это возможно. Посмотрите прикрепленный файл.  
С уважением, Александр.{/post}{/quote}Александр, еще одного шага Вам не хватило для функции.  
Function TextFormula(MyFormula As Range) As String  
If MyFormula.Count > 1 Then Exit Function  
If Left(MyFormula.FormulaLocal, 1) = "=" Then TextFormula = Mid(MyFormula.FormulaLocal, 2)  
End Function
 
как=то у меня гораздо проще получилось:  
 
Function TextFormula(r As Range) As String  
TextFormula = ""  
If r.Value <> "" Then TextFormula = r.Formula  
End Function
 
{quote}{login=kaa}{date=16.03.2008 12:59}{thema=}{post}как=то у меня гораздо проще получилось:  
 
Function TextFormula(r As Range) As String  
TextFormula = ""  
If r.Value <> "" Then TextFormula = r.Formula  
End Function{/post}{/quote}  
 
сорри, вот так надежнее:  
Function TextFormula(r As Range) As String  
TextFormula = ""  
If r.HasFormula Then TextFormula = r.Formula  
End Function
 
да, так изящнее. Только я бы все равно проверял,  ранге какого размера выделил юзер при вводе формулы. И человек просил без знака =, так что без mid или replace не обойтись
 
To kaa, возвращает формулу ВБА, добавил локал, после нормально на русской а не аглицкой мове.
 
По первой части вопроса понял, погорячился, был не прав не проинтуичил.  
По второй - со временем Ваш пост был?
 
{quote}{login=Лузер}{date=16.03.2008 01:53}{thema=}{post}да, так изящнее. Только я бы все равно проверял,  ранге какого размера выделил юзер при вводе формулы. И человек просил без знака =, так что без mid или replace не обойтись{/post}{/quote}  
 
согласен
 
Аффигеть! Спасибо большое!  
Как все оказывается просто! А я с час копался в хелпе, пытаясь выудить, какое же свойство отвечает за формулу - так нифига и  не нашел. Решил обратиться к специалистам. Правильно сделал! )  
 
Кстати, в связи с этим оффтопный вопрос. Кто-нибудь знает сайт или книгу, где были бы простым перечислением написаны операторы VBA. Ну что то типа: Объект Range, свойства -... И такая же фигня с функциями - все функции, что они делают, синтаксис.  
 
2 Igor67  
Нет, это был не я. Я другой юзер.
 
ZVI, как - то отвечал про толковую литературу. В файле посмотри.    
Первую из названных купил. Теперь изучаю, читается легко, интересно, правда потом пальцы путаются, когда сам пытаешься делать.
 
а вот другой вопрос специалистом  
как показать саму формулу, т.е. в тексте и с подстановкой значений  
например  
А1: 10  
А2: 20  
А3: =А1+А2  
А4: =10+20
 
=10&"+"&20  
Или объясните "специалистОм" хитрее :)
Страницы: 1
Читают тему
Наверх