Как макросе перемножить ячейки в excel

Создание простого макроса для перемножения столбца на заданный коэффициент.

Ранее уже публиковалась статья о том, как перемножить столбец на число:

Умножение столбцов таблицы 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/

    Видео с принципом работы макроса:

    Vashcap

    0 / 0 / 0

    Регистрация: 24.04.2016

    Сообщений: 4

    1

    Умножение двух стобцов

    24.04.2016, 21:36. Показов 5861. Ответов 6

    Метки нет (Все метки)


    Студворк — интернет-сервис помощи студентам

    Добрый день.
    Возникла проблема, нужно сделать макрос чтобы умножить 2 столбца с Листа2 (С2:С21 умножить на G2:G21) и показать результат на Листе3 (C2:C21) в Excel. Умножение отдельных ячеек получается делать, а колонок — нет. Я попробовал (код написал ниже), но у меня не получается.

    Помогите пожалуйста. Заранее спасибо

    Visual Basic
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    Sub Кнопка7_Щелчок()
     
    Dim A As Integer, B As Integer, C As Integer, X As Integer
     
    For A = 2 To 21
     
    B = Лист2.Cells(A, 3)
    C = Лист2.Cells(A, 7)
    X = B * C
     
    Лист3.Cells(A, 3) = X
     
    End Sub



    0



    Programming

    Эксперт

    94731 / 64177 / 26122

    Регистрация: 12.04.2006

    Сообщений: 116,782

    24.04.2016, 21:36

    Ответы с готовыми решениями:

    Умножение двух ячеек в VBA
    Написал код, но код увы выдает ошибку. Может быть числа нужно как-нибудь обьявить? Скриншот…

    Умножение двух ячеек в excel
    Начал познавать vba excel, и столкнулся с такой проблемой:

    Sub qq()
    For i = 0 To 10
    Cells(i,…

    Умножение двух матриц
    TTimer идет перемножение матриц. Так вот из-за этого должно происходить вращение, а оно не…

    Умножение двух списков
    Всем привет. Нужно посимвольно перемножить 2 списка на DrScheme или Huskell.
    Спасибою

    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 как решение

    Решение

    Да, не обратил внимания на то, что у Вас странно идет обращение к листам. Немного поправил

    Visual Basic
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    Sub tt()
        Dim i As Long
        For i = 2 To 21
            With Worksheets("Лист2")
                'проверяем, являются ли числами данные в ячейках, если да, перемножаем
                If IsNumeric(.Cells(i, "C")) And IsNumeric(.Cells(i, "G")) Then _
                Worksheets("Лист3").Cells(i, "C") = .Cells(i, "C") * .Cells(i, "G")
            End With
        Next
    End Sub



    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.jpg
Просмотров: 69

Размер: 9.0 Кб

    Visual Basic
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
    Sub mcr()
        Dim d#, v, i&
        On Error Resume Next
        d = 1
        With Application.InputBox("Укажите колонки, столбцы или что у вас там....", Type:=8)
            For Each v In .Cells
                If IsEmpty(v) Then
                    i = i + 1
                    If i > 10 Then Exit Sub
                ElseIf IsNumeric(v) Then
                    d = d * v
                End If
            Next
        End With
     
        MsgBox "Сумма = " & d
    End Sub



    0



    IT_Exp

    Эксперт

    87844 / 49110 / 22898

    Регистрация: 17.06.2006

    Сообщений: 92,604

    16.02.2019, 23:45

    7

    Доброго времени суток, уважаемые форумчане!
    так сложилось, что сам я никогда не писал макросы, и по этой причине обращаюсь к вам.
    перерыл весь интернет уже. , использовал поиск — ничего не нашел (

    необходим макрос, который без выделения вручную диапазона ячеек, без выделения мышкой столбца умножит числовую колонку номер 7 на 1,2., начиная с 3 строки. (то есть умножит каждое число в ячейках столбца на 1,2 и в эти же ячейки запишет результат, кроме первой и второй (начиная с 3) ).
    то есть после запуска макрос сам выбирает третью ячейку седьмого столбца, и идет вниз, умножая каждое число на 1,2 до  543.
    среди ячеек могут встречаться пустые, поэтому лучше указать точную длину столбца.

    Очень нужна ваша помощь! Заранее спасибо!

    п.с. добавил файл пример, в нем рядом 2 столбца. макрос должен превращать 1 столбец в формат второго. при этом это 7 столбец в реальном документе и позиций 543. числа с имеют до 3 знаков после запятой. в диапазоне от 0 до 100000

    Формулировка задачи:

    Начал познавать 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

    ������������� ��������� ���� ������ ���������

    ������������� ��������� ���� ������ ���������

    � ������ ������� �� ���������� ����, � ������� �������� ����� ������ �������� ��� �����, ����������� � �����-���� ���������� �������, �� ��������� �����������. ��� ����� ��� ����������� ������, ��� �������� �������� � �������� 3.57.

    ������� 3.57. ��������� ������

    Sub MultAllCells()

    Dim dblMult As Double

    Dim cell As Range

    ‘ ���� ������������ ��� ���������

    dblMult = InputBox(«������� �����������, �� ������� �������

    ��������»)

    ‘ ��������� ����������� �� ��������� �����������

    For Each cell In Selection

    If IsNumeric(cell.Value) And cell.Value <> «» Then

    ‘ ���������� ������ ������, ���������� �������� ������

    cell.Value = cell.Value * dblMult

    Else

    MsgBox «� ������ » & cell.Address & ������������ ��������

    End If

    Next

    End Sub

    ���������� ���������� ������� ������� �� ���������� �������.

    ��������, � ������� Al, �2 � C3 �������� �������� �������� 10, 15 � 20 ��������������. ������� ��������, ������������ ��� ������, � �������� ����������� ���� ������ �� ����������. � ���������� ��������� ����, ������������ �� ���.�3.16.

    ���.�3.16. ���� ����� ������������

    � ������ ���� � ���������� ������� ������ �����������, �� ������� ���������� �������� ��� �������� ���������� �������. ���� ������ ����������� 2, �� � ������� �1, �2 � C3 �������� ��������� �������������� �� 20, 30 �40.

    ��� ���������� ����� ����� �� ����� ��������: ���� � �����-�� ������ ����������� ��������� �������� ���������� ��������, ����� ������ ��������������� ���������.

    Понравилась статья? Поделить с друзьями:
  • Как люди думают word
  • Как лучше сохранить документ word
  • Как лучше конвертировать pdf в word
  • Как лучше использовать если в excel
  • Как лучше изучить excel