Страница 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

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

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)
будет работать везде
Ура!!! Классик работает. Это самый лучший сайт на всей планете. Работает все как мне хотелось. Даже перещитывает само!!! :rolleyes: Я уже немножко начал и дружить с редактором ВБ. Респект Вам!