Vba excel как диапазон умножить на коэффициент
Всем привет!
С помощью макрорекордера создал макрос для умножения числового диапазона ячеек на значение, вводимое в определённую ячейку. При вводе каждого следующего множителя, значения ячеек диапазона сначала возвращаются к начальным значениям, а потом уже умножаются на новый множитель.
Свои функции этот макрос, конечно выполняет, но во время его работы в глазах рябит от перескакивания с листа на лист. Можно ли его как-нибудь оптимизировать, чтобы функционировал покрасивше?
Всем привет!
С помощью макрорекордера создал макрос для умножения числового диапазона ячеек на значение, вводимое в определённую ячейку. При вводе каждого следующего множителя, значения ячеек диапазона сначала возвращаются к начальным значениям, а потом уже умножаются на новый множитель.
Свои функции этот макрос, конечно выполняет, но во время его работы в глазах рябит от перескакивания с листа на лист. Можно ли его как-нибудь оптимизировать, чтобы функционировал покрасивше? Xpert
А ещё лучше избавится от "Селектов"
А ещё лучше избавится от "Селектов" and_evg
А ещё лучше избавится от "Селектов" Автор - and_evg
Дата добавления - 15.02.2018 в 14:38
в конце кода
[vba]
в конце кода
[vba]
в конце кода
[vba]
Я только в начале пути изучения VBA, таких тонкостей не знаю. Автор - Xpert
Дата добавления - 15.02.2018 в 15:13
Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
Здравствуйте, дамы и господа.
Немного подкорректировал и оптимизировал свой макрос, но столкнулся с проблемой: при указании фиксированных диапазонов ячеек, всё работает нормально(см."Пример"), а если вводить именованный диапазон, выскакивает ошибка(см. "Пример(именован)").
Дело в том, что точно неизвестно, какой диапазон будет применим в тех или иных случаях, поэтому мне нужно, чтобы макрос ориентировался именно на динамический(изменяющийся) а не на фиксированный диапазон.
Подскажите, можно ли это как-то реализовать?
Здравствуйте, дамы и господа.
Немного подкорректировал и оптимизировал свой макрос, но столкнулся с проблемой: при указании фиксированных диапазонов ячеек, всё работает нормально(см."Пример"), а если вводить именованный диапазон, выскакивает ошибка(см. "Пример(именован)").
Дело в том, что точно неизвестно, какой диапазон будет применим в тех или иных случаях, поэтому мне нужно, чтобы макрос ориентировался именно на динамический(изменяющийся) а не на фиксированный диапазон.
Подскажите, можно ли это как-то реализовать? Xpert
Ранее уже публиковалась статья о том, как перемножить столбец на число:
Умножение столбцов таблицы Excel на выбранное число.
Перемножение происходит в несколько действий. Для однократного перемножения выполнить эти действия несложно, но если Вам необходимо постоянно на ежедневной основе выполнять данную процедуру, нервы могут сдать.
Ниже описано, как при помощи макроса можно перемножить выделенные ячейки на фиксированное число в один клик.
Макрос будет состоять из 3 частей:
- Создание формы для ввода данных (коэффициента);
- Вызов окна для ввода числа;
- Макрос перемножения при нажатии кнопки в окне.
Первая часть: Вызов окна ввода коэффициента.
Для начала следует создать окно, которое будет появляется при запуске макроса.
Создается окно в панели разработчик:
- Следует нажать кнопку «Просмотр кода»;
- Кликнуть по названию книги правой кнопкой мыши;
- Выбрать Insert => UserForm
- Когда появится форма, ее можно переименовать в поле (Name). Например: назвать «Okno»
- На UserForm нужно добавить два элемента поле для ввода числа (коэффициента) и кнопку с надписью «Рассчитать»;
- Поле для ввода добавляется при помощи элемента «TextBox». Надпись с пояснением можно добавить в окно Textbox при помощи поля Text в настройках.
- Кнопка добавляется при помощи элемента CommandButtom . Надпись «Рассчитать» добавляется в поле настроек «Caption».
- Двойным кликом по кнопке в режиме конструктора можно перейти в поле модуля для написания макроса расчета значений.
Второй этап: вызов формы для ввода коэффициента.
Sub Перемножение() ‘название макроса
Okno.Show ‘ вызов формы
End Sub
Третий этап: макрос для кнопки «Рассчитать».
На кнопку «Рассчитать» записывается макрос:
Private Sub CommandButton1_Click()
If IsNumeric(TextBox1.Value) = False Then
MsgBox «Неверный коэффициент. Введите число»
For Each cell In Selection
cell.Value = cell.Value * TextBox1.Value
End If
Okno.Hide
End Sub
,где If IsNumeric(TextBox1.Value) = False – проверяет чтобы введенный коэффициент был числом;
For Each cell In Selection – цикл перебирает все ячейки из выделенного диапазона;
cell.Value = cell.Value * TextBox1.Value – перемножает каждую ячейку на коэффициент (введенное число);
Okno.Hide – закрывает форму для заполнения.
Принцип работы макроса: После запуска макроса, появляется форма для внесения нужного коэффициента, на который перемножается диапазон. В форму вносится число для перемножения и нажимается кнопка «Рассчитать». Макрос «привязанный» к кнопке, меняет значения в ячейка на перемноженные данные.
Приведенный макрос перемножает значения как в вертикальном направлении (столбцы), так и в горизонтальном (строки).
Видео с принципом работы макроса:
= Мир MS Excel/Статьи об Excel
Приёмы работы с книгами, листами, диапазонами, ячейками [6] |
Приёмы работы с формулами [13] |
Настройки Excel [3] |
Инструменты Excel [4] |
Интеграция Excel с другими приложениями [4] |
Форматирование [1] |
Выпадающие списки [2] |
Примечания [1] |
Сводные таблицы [1] |
Гиперссылки [1] |
Excel и интернет [1] |
Excel для Windows и Excel для Mac OS [2] |
1. В любой свободной ячейке пишем величину, на которую мы будем изменять цены. В примере я взял увеличение цен на 5% , то есть умножение имеющихся цен на 1,05
2. Копируем ячейку с введённой величиной и выделяем ячейки прайса с ценами
3. Жмём правую кнопку мыши и из появившегося контекстного меню выбираем пункт "Специальная вставка"
4. Далее выбираем опцию "Умножить" и жмём ОК
5. Готово! Не забудьте удалить первоначально введённую величину корректировки цен, а то клиенты будут недовольны ;)
+1 Спам
0 Спам
0 Спам
Очень полезный способ. Но что делать, если в столбце с первоначальными данными есть пустые ячейки? Например в прайс-листе (название подгруппы). Как сделать, чтобы при пересчете в пустых ячейках не появлялись 0,00 ?
0 Спам
0 Спам
0 Спам
0 Спам
0 Спам
0 Спам
У Вас разделитель целой и дробной части - точка. В таком случае Excel переводит значение в дату. Поменяйте разделитель на запятую и всё будет работать правильно
0 Спам
0 Спам
0 Спам
0 Спам
Значит неправильно набираете капчу. Проще сделать это один раз при регистрации, чем каждый раз при комментировании
0 Спам
зарегестрировался! мне надо вычесть 5% столбцы заняты с А до H я пишу 1,05 как показанно выше над цифрами жму правую мышку - копирую комп сам подставляет букву р(рублей) жму левую мышку-выделяю синим цветом жму правую мышку -спец. вставка вычесть в пустой ячейке пишется (-1,05) а цифры которые надо изменить остаются прежнемы я дилетант извините
0 Спам
0 Спам
0 Спам
я просто поясняю что в документе столбцы заняты от А до Н где в какой ячейке писать 1,05( выше написанно-в примере я взял увеличение на 5% то есть умножение на 1,05) а если нужно вычесть 5%
0 Спам
0 Спам
0 Спам
0 Спам
Нужно учитывать, что если нужно только умножить - то в окне "Специальная вставка" выбираем "значения", а не "все"
0 Спам
И нужно быть очень аккуратным с этим умножением, когда работаете с неким отфильтрованным массивом - умножаться будет всё, от первого до последнего элемента массива, даже то, что не выведено по фильтру.
0 Спам
0 Спам
0 Спам
Здравствуйте! А как добиться, что бы в каждой ячейке в солбце число увеличивалось на определенный процент от суммы в ячейке выше? Например: А1 -100, А2-110, А3-121 (В данном случае увеличение на 10%)
Нужна помощь в составлении формулы)
Нужна формула для ячейки С2, что б ней выводились параметры с учетом следующих действий:
Если число, вводимое в ячейку В2 попадает в Диапазон 1 ( т.е. меньше 1), то нужно что б в ячейке С2 отображалась 1.
Если число, вводимое в ячейку В2 попадает в Диапазон 2,3 или 4, то нужно что б в ячейке С2 отображалось это число, умноженное на Коэффициент 1
Если число, вводимое в ячейку В2 попадает в Диапазон 5,6 или 7, то нужно что б в ячейке С2 отображалось это число, умноженное на Коэффициент 2
Соответственно, если число не попадает ни в один из диапазонов, то в ячейке С2 должно отобразится число без учета коэффициентов.
А то самостоятельно получается только формула для одного диапазона. на остальные почему то она не распространяется.
Очень признателен за ответ. Пример прикрепляю.
Нужна помощь в составлении формулы)
Нужна формула для ячейки С2, что б ней выводились параметры с учетом следующих действий:
Если число, вводимое в ячейку В2 попадает в Диапазон 1 ( т.е. меньше 1), то нужно что б в ячейке С2 отображалась 1.
Если число, вводимое в ячейку В2 попадает в Диапазон 2,3 или 4, то нужно что б в ячейке С2 отображалось это число, умноженное на Коэффициент 1
Если число, вводимое в ячейку В2 попадает в Диапазон 5,6 или 7, то нужно что б в ячейке С2 отображалось это число, умноженное на Коэффициент 2
Соответственно, если число не попадает ни в один из диапазонов, то в ячейке С2 должно отобразится число без учета коэффициентов.
А то самостоятельно получается только формула для одного диапазона. на остальные почему то она не распространяется.
Очень признателен за ответ. Пример прикрепляю. Vetal
Нужна помощь в составлении формулы)
Нужна формула для ячейки С2, что б ней выводились параметры с учетом следующих действий:
Если число, вводимое в ячейку В2 попадает в Диапазон 1 ( т.е. меньше 1), то нужно что б в ячейке С2 отображалась 1.
Если число, вводимое в ячейку В2 попадает в Диапазон 2,3 или 4, то нужно что б в ячейке С2 отображалось это число, умноженное на Коэффициент 1
Если число, вводимое в ячейку В2 попадает в Диапазон 5,6 или 7, то нужно что б в ячейке С2 отображалось это число, умноженное на Коэффициент 2
Соответственно, если число не попадает ни в один из диапазонов, то в ячейке С2 должно отобразится число без учета коэффициентов.
А то самостоятельно получается только формула для одного диапазона. на остальные почему то она не распространяется.
Очень признателен за ответ. Пример прикрепляю. Автор - Vetal
Дата добавления - 01.02.2013 в 12:44
Условие. Есть таблица Excel (несколько строк и столбцов) с числами. Нужно умножить все числа таблицы на коэффициент, и чтобы результат отобразился в тех же ячейках. вопрос. как это сделать?
Напиши коэффициент в какой-нибудь ячейке. Далее:
- Копировать (это ячейку)
- Выделяем таблицу
- Правка\Специальная вставка
- Выбираем: значение и умножить
Всё
Поставьте в таблице в каждой ячуйке =(расчет в ячейке таблицы) *$(букв ячейки, в которой введён коэффициент) $ (цифры ячейки, в которой введён коэффициент) например:
=F24*D24*$C$11 (ячейка С11) и получите результат.
Никак. Нельзя заменить значение ячейки, используя для вычиления старое значение. Можно сдеать перенос на другой лист
Чтобы не смущали исходные данные, их можно временно скрыть вместе с коэффицентом.
Посмотреть в исходный размер
Посмотреть в исходный размер
Посмотреть в исходный размер
В той же ячейке - нельзя. Но можно умножить на коэффициент и получить результат в другой таблицу - вводите в строку формул свой коэффициент.
Можно написать макрос на VBA, которыйт будет выполнять вышеизложенный алгоритм и, например, связать его с кнопкой.
Пишешь в любой свободной ячейке =5, т. е например коэфицент равен 5.
копируешь ячейку, выделяешь всю таблицу с данными, далее правой кнопкой по выделенному - специальная вставка - точка "формулы" - точка операция "умножить" и жмешь ОК.
можно сделать ссылку на этот коэф 5, т. е. копировать ссылку на эту ячейку с закремлением по столбцам и строкам, т. е. типа =$A$5 адрес ячейки с цифрой 5, тогда коэф умножения можно менять каким нравится числом, формула на таблицу с умножением на коэф будет работать еще лучше.
Результат умножения содержания ячейки на коэффициент, с записью в эту ячейку невозможен - приводит к циклической ошибке
типа "змеи от испуга скушали друг друга", поэтому создаем новый лист копируем туда, свой а далее (с ним) все что угодно
Читайте также: