Создание простого макроса для перемножения столбца на заданный коэффициент.
Ранее уже публиковалась статья о том, как перемножить столбец на число:
Умножение столбцов таблицы Excel на выбранное число.
Перемножение происходит в несколько действий. Для однократного перемножения выполнить эти действия несложно, но если Вам необходимо постоянно на ежедневной основе выполнять данную процедуру, нервы могут сдать.
Ниже описано, как при помощи макроса можно перемножить выделенные ячейки на фиксированное число в один клик.
Рассмотрим создание макроса.
Макрос будет состоять из 3 частей:
- Создание формы для ввода данных (коэффициента);
- Вызов окна для ввода числа;
- Макрос перемножения при нажатии кнопки в окне.
Первая часть: Вызов окна ввода коэффициента.
Для начала следует создать окно, которое будет появляется при запуске макроса.
Создается окно в панели разработчик:
Второй этап: вызов формы для ввода коэффициента.
Sub Перемножение() ‘название макроса
Okno.Show ‘ вызов формы
End Sub
Третий этап: макрос для кнопки «Рассчитать».
На кнопку «Рассчитать» записывается макрос:
Private Sub CommandButton1_Click()
If IsNumeric(TextBox1.Value) = False Then
MsgBox «Неверный коэффициент. Введите число»
Else
For Each cell In Selection
cell.Value = cell.Value * TextBox1.Value
Next
End If
Okno.Hide
End Sub
,где If IsNumeric(TextBox1.Value) = False – проверяет чтобы введенный коэффициент был числом;
MsgBox «Неверный коэффициент. Введите число» – выводит сообщение об ошибке ввода,
For Each cell In Selection – цикл перебирает все ячейки из выделенного диапазона;
cell.Value = cell.Value * TextBox1.Value – перемножает каждую ячейку на коэффициент (введенное число);
Okno.Hide – закрывает форму для заполнения.
Принцип работы макроса: После запуска макроса, появляется форма для внесения нужного коэффициента, на который перемножается диапазон. В форму вносится число для перемножения и нажимается кнопка «Рассчитать». Макрос «привязанный» к кнопке, меняет значения в ячейка на перемноженные данные.
Приведенный макрос перемножает значения как в вертикальном направлении (столбцы), так и в горизонтальном (строки).
Если у Вас нет времени на написание макроса или что-то не получается Вы можете скачать его вместе с нашей надстройкой по ссылке: http://ruexcel.ru/product/pack1/
Видео с принципом работы макроса:
Умножение диапазона ячеек на число |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
Доброго времени суток, уважаемые форумчане!
так сложилось, что сам я никогда не писал макросы, и по этой причине обращаюсь к вам.
перерыл весь интернет уже. , использовал поиск — ничего не нашел (
необходим макрос, который без выделения вручную диапазона ячеек, без выделения мышкой столбца умножит числовую колонку номер 7 на 1,2., начиная с 3 строки. (то есть умножит каждое число в ячейках столбца на 1,2 и в эти же ячейки запишет результат, кроме первой и второй (начиная с 3) ).
то есть после запуска макрос сам выбирает третью ячейку седьмого столбца, и идет вниз, умножая каждое число на 1,2 до 543.
среди ячеек могут встречаться пустые, поэтому лучше указать точную длину столбца.
Очень нужна ваша помощь! Заранее спасибо!
п.с. добавил файл пример, в нем рядом 2 столбца. макрос должен превращать 1 столбец в формат второго. при этом это 7 столбец в реальном документе и позиций 543. числа с имеют до 3 знаков после запятой. в диапазоне от 0 до 100000
keong has already shown you one method but unfortunately that method requires one to do the calculation in another cell/range. If that is what you want then go with keong’s answer but if you want to do the calculation in the same range then continue reading below.
Here is another method which doesn’t use formulas or VBA.
Let’s say the range is A1:A10
and you want to multiply the entire range by 5
- Simply type
5
in any blank cell. You can delete that later. - Copy that cell
- Select Range
A1:A10
- Right click on it
- Click on
Paste Special | Values - Multiply
as shown below and you are done.
Before
After
Followup from comments
In case you do not want to use a temp cell to write 5 then you can directly set 5
in the clipboard and use it like this.
Option Explicit
Sub Sample()
Dim ws As Worksheet
Dim MyData As New DataObject
Dim rng As Range
Set ws = Sheet1
Set rng = ws.Range("A1:A5")
'~~> Put the number 5 in clipboard
MyData.SetText 5
MyData.PutInClipboard
'~~> Get the data from clipboard
MyData.GetFromClipboard
rng.Formula = Application.Evaluate("=" & _
rng.Address & _
"*" & _
Val(MyData.GetText))
End Sub
Like I mentioned, you don’t need VBA for this but if you still want to use VBA then you can use this instead of copying the data to the clipboard.
rng.Formula = Application.Evaluate("=" & rng.Address & "*" & MYNUMBER)
Where MYNUMBER
is the variable which has the number that you want to multiply the range with.
Задача: В прайс-листе необходимо увеличить цены на 20%, при этом чтобы в листе не было формул.
Пример листа:
Решить данную задачу поможет функция «Специальная вставка». Сначала нужно в любую ячейку вставить число, на которое будем умножать ячейки (например «1,2»). И скопировать эту ячейку.
Далее нужно выделить нужные ячейки и в контекстном меню выбрать «Специальная вставка», в нем выбрать «умножить»:
Округление значений в ячейках
Если требуется округлить значения, то можно воспользоваться панелью «число» в вкладке «Главная» и убрать разряды у выделенных ячеек:
Или выделить нужные ячейки и в контекстном меню выбрать «формат ячеек», далее задать числовой формат и убрать десятичные знаки.
Результат:
Умножение и деление, сложение и вычитание, возведение в степень и извлечение корня, все эти действия можно производить с диапазонами числовых значений в таблицах Excel. Осуществлять математические действия между диапазоном числовых значений и заданным числом можно различными способами, об этом и пойдет речь далее.
Для примера возьмем классическую задачу — умножить или разделить столбец значений на одно и то же число, но будем иметь в виду, что вместо столбца можно рассматривать диапазон ячеек любого произвольного размера, а вместо умножения и деления можно производить и другие математические действия. Такая задача возникает при различных преобразованиях числовых значений, например при переводе километров в метры, тысяч рублей в рубли, рублей в доллары и так далее.
Как умножить столбец ячеек на число при помощи формул?
Наиболее распространенный способ умножения числовых значений диапазона, в нашем случае столбца, заключается в использовании функции (формулы). Здесь тоже возможны варианты, можно использовать формулу с относительными ссылками,
а можно с абсолютными, когда адрес ячейки закрепляется при помощи специальных значков $ и остается неизменным при копировании формулы.
Конечный результат одинаковый при разном количестве значений на рабочем листе. Этот способ целесообразно использовать тогда, когда необходимо, чтобы производился пересчет всего диапазона при изменении множителя. В случае, если пересчет не требуется, быстрее и удобнее использовать способ, при котором значения ячеек заменяются результатами умножения.
Умножение диапазона ячеек на число с использованием специальной вставки
Столбец с вычисляемыми по формулам значениями нужен далеко не всегда. Часто возникает необходимость просто заменить значения столбца новыми значениями, которые получены умножением старых значений на заданное число. При этом можно обойтись без всяких функций и формул, достаточно скопировать число-множитель, выделить нужный диапазон значений, выбрать из контекстного меню (которое появляется после нажатия правой кнопки мыши) пункт «Специальная вставка», в разделе «Операция» выбрать опцию «Умножить» и нажать «ОК».
Исходный диапазон значений заменяется значениями, полученными умножением первоначальных чисел на скопированное число. Использование этого метода позволяет не только умножать столбец или диапазон на число, но и производить другие математические действия, такие как деление, сложение и вычитание.
Как умножить столбец на число при помощи надстройки?
Вышеизложенные методы, как правило, закрывают потребности большей части пользователей, но не всегда удобны в использовании, например при проведении многократных операций, когда столбец значений умножается на число, после этого проверяется какое-либо условие и по результатам этой проверки действие повторяется. При решении таких задач удобным инструментом может служить надстройка для Excel, которая позволяет заменять значения ячеек результатами вычислений.
При помощи надстройки можно не только умножать, делить, складывать и вычитать, но и возводить числа в степень и извлекать корень, выбрав нужное математическое действие из выпадающего списка в диалоговом окне.
Использование надстройки позволяет:
1) Выбирать диапазон ячеек, либо работать с используемым диапазоном (от первой заполненной ячейки рабочего листа до последней заполненной ячейки);
2) задавать число в диалоговом окне надстройки;
3) выбирать одно из шести математических действий, которое будет производиться между всеми числовыми значениями выбранного диапазона и заданным числом;
4) автоматически заменять числовые значения диапазона результатами вычислений.
Видео по работе с надстройкой
надстройка для проведения математических операций между заданным числом и диапазоном значений
Суть проблемы следующая. ПО выводит шаблон, где в значениях в столбце L прописаны не те формулы, которые мне нужны. Напротив значений «зарплата», «нр от ФОТ» и «сп от ФОТ» из столбца D стоят значения из столба L.
Задача:
Написать макрос, который бы прописывал формулу перемножения каждой ячейки из столбца L на число (1) из соседнего столбца K. (L38*K38, L39*K38, L40*K38). Там стоит единица, но вместо неё коэффициент затем проставляется вручную какой нужно. Так необходимо сделать для всего файла, а не только для позиции 1. В итоге после срабатывания макроса должно получится так, чтобы при изменении коэффициента из столбца K пересчитывались значения из столба L.
Запись макроса не работает, потому что заранее неизвестно из скольки позиций будет фаил, может быть там 3 позиции, а может быть 100.
Формулировка задачи:
Разработайте форму с одним полем и одной кнопкой. В поле вводится число, а при нажатии на кнопку все значения выделенного диапазона листа Excel умножаются на это число.
Код к задаче: «Все значения выделенного диапазона листа Excel умножить на заданное число»
textual
Private Sub CommandButton1_Click() Dim r As Range For Each r In Selection r = r * TextBox1.Value Next End Sub
Полезно ли:
12 голосов , оценка 3.917 из 5