Vashcap 0 / 0 / 0 Регистрация: 24.04.2016 Сообщений: 4 |
||||
1 |
||||
Умножение двух стобцов24.04.2016, 21:36. Показов 5856. Ответов 6 Метки нет (Все метки)
Добрый день. Помогите пожалуйста. Заранее спасибо
0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
24.04.2016, 21:36 |
Ответы с готовыми решениями: Умножение двух ячеек в VBA Умножение двух ячеек в excel Sub qq() Умножение двух матриц Умножение двух списков 6 |
45 / 45 / 15 Регистрация: 14.04.2016 Сообщений: 128 |
|
24.04.2016, 22:01 |
2 |
Что Вы хотите получить в результате? Если сумму произведений ячеек, то для этого есть функция СУММПРОИЗВ() и никакой макрос не нужен. Если столбец с построчным перемножением, то Вы его и получаете
1 |
0 / 0 / 0 Регистрация: 24.04.2016 Сообщений: 4 |
|
24.04.2016, 22:14 [ТС] |
3 |
Мне по заданию нужно сделать именно макрос. Мне нужно получить столбец с построчным перемножением, но мой макрос почему то ответом пишет только один результат в последней ячейке столбца
0 |
МВТ 45 / 45 / 15 Регистрация: 14.04.2016 Сообщений: 128 |
||||
24.04.2016, 22:23 |
4 |
|||
Сообщение было отмечено Vashcap как решение РешениеДа, не обратил внимания на то, что у Вас странно идет обращение к листам. Немного поправил
1 |
0 / 0 / 0 Регистрация: 24.04.2016 Сообщений: 4 |
|
24.04.2016, 22:29 [ТС] |
5 |
Огромное спасибо за помощь. Все работает
0 |
1 / 1 / 0 Регистрация: 22.07.2018 Сообщений: 80 |
|
16.02.2019, 22:07 |
6 |
Здравствуйте!
0 |
fever brain oh my god 1454 / 793 / 161 Регистрация: 05.01.2016 Сообщений: 2,307 Записей в блоге: 8 |
||||
16.02.2019, 23:45 |
7 |
|||
0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
16.02.2019, 23:45 |
7 |
Формулировка задачи:
Начал познавать vba excel, и столкнулся с такой проблемой:
Пожалуйста помогите разобраться в чем ошибка)))))
Код к задаче: «Умножение двух ячеек в excel»
textual
Sub qq() For i = 0 To 10 переменная=Cells(i, 1) переменная=переменная*2 Cells(i, 1)=переменная Next i End Sub
Полезно ли:
5 голосов , оценка 4.600 из 5
Арифметические (математические) операторы, использующиеся в VBA Excel. Их предназначение, особенности вычислений, приоритет в выражениях.
Обзор арифметических операторов
Операторы | Описание |
---|---|
Оператор «+» | Сложение двух чисел или объединение двух строк (для объединения строк предпочтительнее использовать оператор «&») |
Оператор «-» | Вычитание (определение разности двух чисел) или отрицание (отражение отрицательного значения числового выражения: -15, -a) |
Оператор «*» | Умножение двух чисел |
Оператор «/» | Деление двух чисел (деление на 0 приводит к ошибке) |
Оператор «^» | Возведение числа в степень |
Оператор «» | Целочисленное деление |
Оператор «Mod» | Возвращает остаток от деления двух чисел |
Особенности операторов «» и «Mod»
Перед вычислением целочисленного результата или остатка от деления двух чисел делимое и делитель округляются. Причем, используется бухгалтерское округление:
- -3.5 => -4
- -2.5 => -2
- -1.5 => -2
- -0.5 => 0
- 0.5 => 0
- 1.5 => 2
- 2.5 => 2
- 3.5 => 4
Следующие строки вызовут ошибку «Division by zero» («Деление на ноль»):
a = 3 Mod 0.5 a = 3 (2 — 2.5) |
Чтобы избежать ошибок, когда требуется общепринятое математическое округление, округляйте делитель и делимое с помощью оператора WorksheetFunction.Round.
Приоритет арифметических операторов
Приоритет определяет очередность выполнения математических операторов в одном выражении. Очередность выполнения арифметических операторов в VBA Excel следующая:
- «^» – возведение в степень;
- «—» – отрицание;
- «*» и «/» – умножение и деление;1
- «» – целочисленное деление;
- «Mod» – остаток от деления двух чисел;
- «+» и «—» – сложение и вычитание.2
1 Если умножение и деление выполняются в одном выражении, то каждая такая операция выполняется слева направо в порядке их следования.
2 Если сложение и вычитание выполняются в одном выражении, то каждая такая операция выполняется слева направо в порядке их следования.
Для переопределения приоритета выполнения математических операторов в VBA Excel используются круглые скобки. Сначала выполняются арифметические операторы внутри скобок, затем — операторы вне скобок. Внутри скобок приоритет операторов сохраняется.
a = 3 ^ 2 + 1 ‘a = 10 a = 3 ^ (2 + 1) ‘a = 27 a = 3 ^ (2 + 1 * —2) ‘a = 1 |
Умножение диапазона ячеек на число |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
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.