|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу. Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста". Название темы слишком короткое или не отражает сути вашего вопроса. Тема исчерпала себя, помните, один вопрос - одна тема Прочитайте правила и заново правильно создайте тему. |
|
Опции темы | Поиск в этой теме |
19.11.2008, 16:07 | #1 |
Новичок
Джуниор
Регистрация: 19.11.2008
Сообщений: 1
|
Помогите с расчетами в Excel
Подскажите, пожалуйста, решить следующий вопрос:
в Excel есть столбец со значением стоимости услуг. Стоимость периодически увеличивается на определенный коэффициент по отношению к предыдущему значению. Как сделать так, чтобы не производить несколько манипуляций, а просто менять значение коэффициента в одной ячейке и видеть в столбце стоимости новое значение (с учетом того, что при введении нового коэфффициента, стоимость будет изменяться на величину этого коэффициента)? |
19.11.2008, 22:08 | #2 |
Пользователь
Регистрация: 17.11.2008
Сообщений: 18
|
Иногда возникает надобность добавить одно число к куче разных ячеек, или домножить их на какой-то коэффициент.
' MultiplicateSelection ' домножает выделенные ячейки на число с округлением до десятков Sub MultiplicateSelection() ' объявляем переменные Dim Koef As Variant, cl As Range ' запрашиваем у пользователя число Koef = InputBox("Умножить на", "Домножение выделения") ' если ничего не введено или нажата ОТМЕНА, выходим из процедуры If Koef = "" Then Exit Sub ' Помните о пользователе! ' Простейшей заменой решается проблема с десятичной точкой ' (в системе разделителем установлена запятая, если введена ' точка, здесь она заменяется на запятую) Koef = Replace(Koef, ".", ",") ' опять перебираем выделенные ячейки For Each cl In Selection ' указываем объект, с которым будем работать With cl ' кучка возможно не нужных вам проверок и вычисление If .Value <> "" And .Locked = False And _ CStr(.Formula) = CStr(.Value) Then .Value = Round((.Value * CDbl(Koef)) / 10) * 10 End If ' заканчиваем работу с указанным объектом End With ' закрываем цикл Next ' выходим из процедуры End Sub InputBox - обычное окошко для вводя текста пользователем. Функция возвращает пустую строку, если была нажата кнопка ОК при пустой строке ввода, или нажата Отмена. Replace заменяет в строке одну последовательность символов на другую. Здесь используется для того, чтобы пользователю не приходилось думать о раскладке. Неважно, что он напечатает - десятичную точку или запятую, вычисления пройдут без ошибки. Далее уже знакомый перебор выделенных ячеек. Для чего нужна конструкция With ... End With? Если в каком-то блоке кода вы активно работаете с одним объектом, есть смысл указать его после слова With, а дальше вместо Объект.Свойство писать просто .Свойство. Это делает код более читаемым, а также, насколько я знаю, несколько ускоряет исполнение. Я специально оставил свои проверки свойств ячейки, для интереса. В одном из моих шаблонов лист организован таким образом, что я могу выделить несколько строк целиком и запустить эту процедуру. При этом пропускаются пустые ячейки (.Value <> ""), защищенные от изменений (.Locked = False), и содержащие формулы (CStr(.Formula) = CStr(.Value)). Все остальные изменяются. Round - округление. Поскольку округление происходит только до целых, приходится делить, а потом умножать на 10. И еще две функции: CStr - конвертация в строку, в данном случае для корректного сравнения. CDbl - приведение к вещественному типу Double, вводит-то пользователь строку, а нам числа умножать надо. Впрочем, Visual Basic редко требует явное преобразование типов, справляется сам, но так - аккуратнее. Специально не разбираю аргументы функций. Читайте документацию и экспериментируйте, это лучший способ понять. Это с http://doitq.ru/ Я не специалист, я только ищу для себя ту информацию, которая может пригодиться в работе. Может это то, что ты ищешь. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
помогите в excel | Norik-74 | Microsoft Office Excel | 2 | 04.06.2008 11:27 |
Помогите с заданиями в Excel | Arxan | Помощь студентам | 5 | 15.05.2008 20:29 |
Помогите! Глючит Excel | Pithon | Microsoft Office Excel | 8 | 20.02.2008 07:47 |
Помогите по Excel пожалуйста | лопух | Microsoft Office Excel | 2 | 04.11.2007 17:25 |