Страница 1 из 2
Вопрос по суммированию в Эксель
Добавлено: 11 фев 2008, 17:54
shikin
Здраствуйте. Подскажите пожалуйста.
Уменя есть в ячейке А1 такое значение 850+45-300
В итоге хочу в А1 видна чтобы была видна строка 850+45-300, а в В1 595
Как такое безобразие автоматизировать. Заранее спасиба
Re: Вопрос по суммированию в Эксель
Добавлено: 12 фев 2008, 16:12
son
в А1 - оставляете тестовое значение "850+45-300"
Range("B1").Formula = "="+Range("A1").Value
Re: Вопрос по суммированию в Эксель
Добавлено: 12 фев 2008, 18:42
anval
Можно еще с помощью метода Evaluate, который позволяет по строковому представлению арифметического выражения находить его значение:
Range("B1").Value = Application.Evaluate(Range("A1").Value)
Re: Вопрос по суммированию в Эксель
Добавлено: 12 фев 2008, 19:25
shikin
anval писал(а):Можно еще с помощью метода Evaluate, который позволяет по строковому представлению арифметического выражения находить его значение:
Range("B1").Value = Application.Evaluate(Range("A1").Value)
Пожалуйста извините меня за мою наивность. Обьясните пожалуйста, как применить чтобы посчитался результат? Вот действия которые я сделал:
1)Я вписал в редактор ВБ строку
Range("B1").Value = Application.Evaluate(Range("A1").Value)
2)В ячейку А1 пометил строку
850+45-300
3)В ячейку В1 вписал
=А1
Что я неправильно сделал

, подскажите пожалуйста(в ВБ я некогда не работал)

Заранее огромное спасиба
Re: Вопрос по суммированию в Эксель
Добавлено: 12 фев 2008, 22:40
VictorM
shikin, все правильно, только в ячейку В1 вписывать ничего не нужно.
Нужное Вам значение появится в ячейке после срабатывания процедуры.
Код: Выделить всё
Sub Test()
Range("B1").Value = Application.Evaluate(Range("A1").Value)
End Sub
т.е. если Вы ожидали автоматический пересчет - этого не будет. И для автоматизации этого дела прийдется применить что-то типа Worksheet_SelectionChange
Re: Вопрос по суммированию в Эксель
Добавлено: 13 фев 2008, 01:53
shikin
VictorM писал(а):shikin, все правильно, только в ячейку В1 вписывать ничего не нужно.
Нужное Вам значение появится в ячейке после срабатывания процедуры.
Код: Выделить всё
Sub Test()
Range("B1").Value = Application.Evaluate(Range("A1").Value)
End Sub
т.е. если Вы ожидали автоматический пересчет - этого не будет. И для автоматизации этого дела прийдется применить что-то типа Worksheet_SelectionChange
Ой, класс!! Заработало!! Оно заработало!!! Спасибочки!!! Подскажите пожалуйста, как эту процедуру изменить. у меня в документе около 2-3 листов с такими строками, в которых по две ячейки. Очень громоздкий код будет если я впишу строк 100 таких, для каждой строки.
Я вам очень благодарен, вы себе не представляете, как мне упростилась жизнь
Извините за мое настырство.
Re: Вопрос по суммированию в Эксель
Добавлено: 13 фев 2008, 04:00
Dim_ok
в модуль
Private Function Frml(b) As String
Frml = Application.Evaluate(Range(b.Address).Value)
End Function
в В1
=Frml(A1)
будет работать везде
Re: Вопрос по суммированию в Эксель
Добавлено: 13 фев 2008, 09:35
VictorM
Dim_ok, точно! А я чё-то затупил, зациклился сразу на процедуре.:-)
Re: Вопрос по суммированию в Эксель
Добавлено: 13 фев 2008, 10:05
anval
Только я бы объявила функцию не "String
", а "Single" или "Double"(в случае наличия в формуле операции деления результат может получиться с длинной цепочкой знаков после запятой, если же Frml объявить как плавающее число, то в ячейках с результатом оперативно можно задать нужное число знаков после запятой(Формат-Ячейка-Число-Числовой-...)
Re: Вопрос по суммированию в Эксель
Добавлено: 13 фев 2008, 21:42
shikin
Dim_ok писал(а):в модуль
Private Function Frml(b) As String
Frml = Application.Evaluate(Range(b.Address).Value)
End Function
в В1
=Frml(A1)
будет работать везде
Ура!!! Классик работает. Это самый лучший сайт на всей планете. Работает все как мне хотелось. Даже перещитывает само!!!

Я уже немножко начал и дружить с редактором ВБ. Респект Вам!