Макрос умножение ячеек на число 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/

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

    Умножение диапазона ячеек на число

    Xpert

    Дата: Четверг, 15.02.2018, 14:33 |
    Сообщение № 1

    Группа: Проверенные

    Ранг: Форумчанин

    Сообщений: 103


    Репутация:

    0

    ±

    Замечаний:
    0% ±


    Excel 2013

    Всем привет!
    С помощью макрорекордера создал макрос для умножения числового диапазона ячеек на значение, вводимое в определённую ячейку. При вводе каждого следующего множителя, значения ячеек диапазона сначала возвращаются к начальным значениям, а потом уже умножаются на новый множитель.
    Свои функции этот макрос, конечно выполняет, но во время его работы в глазах рябит от перескакивания с листа на лист. Можно ли его как-нибудь оптимизировать, чтобы функционировал покрасивше?

     

    Ответить

    and_evg

    Дата: Четверг, 15.02.2018, 14:38 |
    Сообщение № 2

    Группа: Проверенные

    Ранг: Обитатель

    Сообщений: 416


    Репутация:

    72

    ±

    Замечаний:
    0% ±


    Excel 2007

    Xpert, Добрый день.
    В начале работы макроса:
    [vba]

    Код

    Application.ScreenUpdating = False

    [/vba]
    в конец:
    [vba]

    Код

    Application.ScreenUpdating = True

    [/vba]

    А ещё лучше избавится от «Селектов»

    Сообщение отредактировал and_evgЧетверг, 15.02.2018, 14:39

     

    Ответить

    китин

    Дата: Четверг, 15.02.2018, 14:39 |
    Сообщение № 3

    Группа: Модераторы

    Ранг: Экселист

    Сообщений: 6973


    Репутация:

    1063

    ±

    Замечаний:
    0% ±


    Excel 2007;2010;2016

    вначале кода
    [vba]

    Код

    Application.ScreenUpdating = False
        Application.CutCopyMode = False
        Application.DisplayAlerts = False

    [/vba]

    в конце кода
    [vba]

    Код

    Application.ScreenUpdating = True
        Application.CutCopyMode = True
        Application.DisplayAlerts = True

    [/vba]


    Не судите очень строго:я пытаюсь научиться
    ЯД 41001877306852

     

    Ответить

    Xpert

    Дата: Четверг, 15.02.2018, 14:42 |
    Сообщение № 4

    Группа: Проверенные

    Ранг: Форумчанин

    Сообщений: 103


    Репутация:

    0

    ±

    Замечаний:
    0% ±


    Excel 2013

    and_evg, китин, спасибо!
    Глаз радуется и отдыхает yes

    Сообщение отредактировал XpertЧетверг, 15.02.2018, 16:12

     

    Ответить

    Xpert

    Дата: Четверг, 15.02.2018, 15:13 |
    Сообщение № 5

    Группа: Проверенные

    Ранг: Форумчанин

    Сообщений: 103


    Репутация:

    0

    ±

    Замечаний:
    0% ±


    Excel 2013

    А ещё лучше избавится от «Селектов»

    Я только в начале пути изучения VBA, таких тонкостей не знаю.

     

    Ответить

    китин

    Дата: Четверг, 15.02.2018, 15:31 |
    Сообщение № 6

    Группа: Модераторы

    Ранг: Экселист

    Сообщений: 6973


    Репутация:

    1063

    ±

    Замечаний:
    0% ±


    Excel 2007;2010;2016


    Не судите очень строго:я пытаюсь научиться
    ЯД 41001877306852

    Сообщение отредактировал китинЧетверг, 15.02.2018, 15:32

     

    Ответить

    Xpert

    Дата: Понедельник, 12.03.2018, 14:58 |
    Сообщение № 7

    Группа: Проверенные

    Ранг: Форумчанин

    Сообщений: 103


    Репутация:

    0

    ±

    Замечаний:
    0% ±


    Excel 2013

    Здравствуйте, дамы и господа.
    Немного подкорректировал и оптимизировал свой макрос, но столкнулся с проблемой: при указании фиксированных диапазонов ячеек, всё работает нормально(см.»Пример»), а если вводить именованный диапазон, выскакивает ошибка(см. «Пример(именован)»).
    Дело в том, что точно неизвестно, какой диапазон будет применим в тех или иных случаях, поэтому мне нужно, чтобы макрос ориентировался именно на динамический(изменяющийся) а не на фиксированный диапазон.
    Подскажите, можно ли это как-то реализовать?

     

    Ответить

    Manyasha

    Дата: Вторник, 13.03.2018, 11:56 |
    Сообщение № 8

    Группа: Модераторы

    Ранг: Старожил

    Сообщений: 2198


    Репутация:

    898

    ±

    Замечаний:
    0% ±


    Excel 2010, 2016

    Xpert, здравствуйте.
    Диапазон у Вас строится на листе1, а в макросе вы его ищете на листе2.
    Еще нужно проверить, содержит ли диапазон ячейки, например так:
    [vba]

    Код

    On Error Resume Next
    Set x = Sheets(«Лист1»).Range(«Диапазон»)
    Debug.Print IsEmpty(x)

    [/vba]


    ЯД: 410013299366744 WM: R193491431804

     

    Ответить

    InExSu

    Дата: Вторник, 13.03.2018, 23:07 |
    Сообщение № 9

    Группа: Друзья

    Ранг: Ветеран

    Сообщений: 646


    Репутация:

    96

    ±

    Замечаний:
    0% ±


    Excel 2010

    Привет!
    [vba]

    Код

    Sub Макрос()
    ‘…
        arr1() = Sheets(«Лист2»).Range(«Диапазон»).Value

    [/vba]
    а на Лист2 нет Range(«Диапазон»)

    а если Вы его там создадите, то в коде листа выдаст ошибку
    Private Sub Worksheet_Change(ByVal Target As Range)
    [vba]

    Код

    ‘…
      If Not Intersect(Target, Range(«Диапазон»)) Is Nothing Then Call copie

    [/vba]


    Разработчик Битрикс24 php, Google Apps Script, VBA Excel

     

    Ответить

    Xpert

    Дата: Среда, 14.03.2018, 11:53 |
    Сообщение № 10

    Группа: Проверенные

    Ранг: Форумчанин

    Сообщений: 103


    Репутация:

    0

    ±

    Замечаний:
    0% ±


    Excel 2013

    Manyasha, InExSu, спасибо.
    Сделал как вы сказали, ошибка исчезла…по отдельности каждый макрос(Макрос и Copie) работает, а вот с модуля листа не запускаются.
    %)
    В модуле листа код такой:

    [vba]

    Код

    Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
        Dim rng As Range: Set rng = [C1]
        On Error Resume Next
    Set x = Sheets(«Лист1»).Range(«Диапазон»)
    Debug.Print IsEmpty(x)
      If Not Intersect(rng, Target) Is Nothing Then Макрос
      If Not Intersect(x, Target) Is Nothing Then Call copie
        Application.EnableEvents = True
    End Sub

    [/vba]

    Макрос:

    [vba]

    Код

    Sub Макрос()
    Dim arr1(), arrRes()
    Dim i As Long
        arr1() = Sheets(«Лист1»).Range(«Данные»).Value
        ReDim arrRes(1 To UBound(arr1, 1), 1 To 1)
         For i = 1 To UBound(arr1, 1) Step 1
            arrRes(i, 1) = arr1(i, 1) * (1 + Range(«C1»).Value)
        Next i
        Sheets(«Лист1»).Range(«A2»).Resize(UBound(arrRes, 1)).Value = arrRes()
    End Sub

    [/vba]

    и макрос Copie

    [vba]

    Код

    Sub copie()
        Application.ScreenUpdating = False
        Application.CutCopyMode = False
        Application.DisplayAlerts = False
        On Error Resume Next
        Set x = Sheets(«Лист1»).Range(«Данные»)
        Debug.Print IsEmpty(x)
        x.copy
        Sheets(«Лист2»).Range(«A2»).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
           Sheets(«Лист1»).Select
        Application.ScreenUpdating = False
        Application.CutCopyMode = False
        Application.DisplayAlerts = False
    End Sub

    [/vba]

    Голову сломал, но не получается.

    Сообщение отредактировал XpertСреда, 14.03.2018, 11:54

     

    Ответить

    InExSu

    Дата: Среда, 14.03.2018, 13:03 |
    Сообщение № 11

    Группа: Друзья

    Ранг: Ветеран

    Сообщений: 646


    Репутация:

    96

    ±

    Замечаний:
    0% ±


    Excel 2010


    Пожалуйста, приложите новый файл


    Разработчик Битрикс24 php, Google Apps Script, VBA Excel

     

    Ответить

    Mikael

    Дата: Среда, 14.03.2018, 14:06 |
    Сообщение № 12

    Группа: Пользователи

    Ранг: Участник

    Сообщений: 80


    Репутация:

    31

    ±

    Замечаний:
    0% ±


    Excel 2010

    Всем доброго дня!
    Xpert, а Вам обязательно использовать второй лист и именованный диапазон?
    Попробуйте такой вариант:
    [vba]

    Код

    Private Sub Worksheet_Change(ByVal Target As Range)

            If Not Intersect(Target, [c1]) Is Nothing Then
            Dim arr, li&, lmp#, rng As Range
            Set rng = Intersect([a1].EntireColumn, ActiveSheet.UsedRange)
            With Application
                .Calculation = xlCalculationManual
                .ScreenUpdating = False: .EnableEvents = False

                            arr = rng.Value
                .Undo: lmp = [c1]: .Undo

                            For li = 1 To UBound(arr)
                    If Not IsEmpty(arr(li, 1)) Then arr(li, 1) = arr(li, 1) / (1 + lmp) * (1 + [c1])
                Next li

                            rng.Value = arr

                            .Calculation = xlCalculationAutomatic
                .ScreenUpdating = True: .EnableEvents = True
            End With
        End If

        End Sub

    [/vba]

     

    Ответить

    Xpert

    Дата: Среда, 14.03.2018, 20:32 |
    Сообщение № 13

    Группа: Проверенные

    Ранг: Форумчанин

    Сообщений: 103


    Репутация:

    0

    ±

    Замечаний:
    0% ±


    Excel 2013

    Mikael, нет, необязательно.
    Ваш вариант почти то, что надо.
    Спасибо!

    Сообщение отредактировал XpertСреда, 14.03.2018, 20:53

     

    Ответить

    Mikael

    Дата: Среда, 14.03.2018, 22:15 |
    Сообщение № 14

    Группа: Пользователи

    Ранг: Участник

    Сообщений: 80


    Репутация:

    31

    ±

    Замечаний:
    0% ±


    Excel 2010


    Мне остается только догадываться, что значит «почти», но судя по Вашему коду, мне пришла в голову такая идея.
    Upg:
    [vba]

    Код

    Private Sub Worksheet_Change(ByVal Target As Range)

            With Application
            .Calculation = xlCalculationManual
            .ScreenUpdating = False: .EnableEvents = False

                    Dim arr, li&, lmp#, rng As Range
            Set rng = Intersect([a1].EntireColumn, ActiveSheet.UsedRange)

                    If Not Intersect(Target, [c1]) Is Nothing And Target.Count = 1 Then
                .Undo: lmp = [c1]: .Undo
                arr = rng.Value
                For li = 1 To UBound(arr)
                    If Not IsEmpty(arr(li, 1)) And IsNumeric(arr(li, 1)) Then arr(li, 1) = arr(li, 1) / (1 + lmp) * (1 + [c1])
                Next li
                rng.Value = arr
            End If

                    If Not Intersect(Target, rng) Is Nothing Then
                If Not IsEmpty(Target) Then Target.Value = Evaluate(Target.Address & «*» & Replace(CStr(1 + [c1]), «,», «.»))
            End If

                    .Calculation = xlCalculationAutomatic
            .ScreenUpdating = True: .EnableEvents = True
        End With

        End Sub

    [/vba]

    Голову сломал, но не получается

    Приложите свой файл

     

    Ответить

    Xpert

    Дата: Четверг, 15.03.2018, 06:43 |
    Сообщение № 15

    Группа: Проверенные

    Ранг: Форумчанин

    Сообщений: 103


    Репутация:

    0

    ±

    Замечаний:
    0% ±


    Excel 2013

    Господа!
    Прилагаю свой файл.
    Ещё загвоздка в том, что при выставлении 0% в ячейке C1, значения в столбце А на листе 1 не возвращаются к первоначальным.

    К сообщению приложен файл:

    10.xlsm
    (22.8 Kb)

     

    Ответить

    Xpert

    Дата: Четверг, 15.03.2018, 06:47 |
    Сообщение № 16

    Группа: Проверенные

    Ранг: Форумчанин

    Сообщений: 103


    Репутация:

    0

    ±

    Замечаний:
    0% ±


    Excel 2013

    Мне остается только догадываться, что значит «почти», но судя по Вашему коду, мне пришла в голову такая идея.

    Mikael, прошу прощения, сразу не пояснил: при удалении значений из диапазона ячеек в столбце А, вылазит ошибка, которой хотелось бы избежать.

     

    Ответить

    Mikael

    Дата: Четверг, 15.03.2018, 11:05 |
    Сообщение № 17

    Группа: Пользователи

    Ранг: Участник

    Сообщений: 80


    Репутация:

    31

    ±

    Замечаний:
    0% ±


    Excel 2010

    Утречка всем!!! :)

    не возвращаются к первоначальным.

    Потому что Макрос() берет первоначальные данные на листе1, а у Вас эти данные на листе2
    Поправьте на лист2 и line2:
    [vba]

    Код

        ‘1. Копирование данных из экселя в массивы.
        arr1() = Sheets(«Лист2»).Range(«Line2»).Value

    [/vba]
    Попробуйте. Если ошибка осталась, опишите подробнее Ваши действия, сделайте скрин ошибки.

     

    Ответить

    Xpert

    Дата: Четверг, 15.03.2018, 20:28 |
    Сообщение № 18

    Группа: Проверенные

    Ранг: Форумчанин

    Сообщений: 103


    Репутация:

    0

    ±

    Замечаний:
    0% ±


    Excel 2013

    Mikael, гениально!
    Всё работает как часы.
    Огромное спасибо за участие!

     

    Ответить

    Xpert

    Дата: Понедельник, 01.04.2019, 11:34 |
    Сообщение № 19

    Группа: Проверенные

    Ранг: Форумчанин

    Сообщений: 103


    Репутация:

    0

    ±

    Замечаний:
    0% ±


    Excel 2013

    Приветствую всех участников!
    Подправил данный макрос для использования в рамках «умной таблицы». Вроде всё работает, но есть одно НО.
    При вставке строк получается такая картина

    формулы в Столбце 5 не копируются в новые строки. Появляются нули за пределами границ таблицы…

    При удалении — такая:

    Опять нули.

    Помогите это исправить.

    ПРимер прилагаю.

    К сообщению приложен файл:

    9125860.xlsm
    (63.8 Kb)

    Сообщение отредактировал XpertПонедельник, 01.04.2019, 11:35

     

    Ответить

    _Boroda_

    Дата: Понедельник, 01.04.2019, 11:45 |
    Сообщение № 20

    Группа: Модераторы

    Ранг: Местный житель

    Сообщений: 16618


    Репутация:

    6465

    ±

    Замечаний:
    0% ±


    2003; 2007; 2010; 2013 RUS

    — Прочитайте Правила форума
    — Создайте новую тему согласно п.5q Правил форума. Причем здесь умножение ячеек на число?
    картинки не на Радикал нужно класть, а сюда, также, как и Excel файлы


    Скажи мне, кудесник, любимец ба’гов…
    Платная помощь:
    Boroda_Excel@mail.ru
    Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

     

    Ответить

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

    необходим макрос, который без выделения вручную диапазона ячеек, без выделения мышкой столбца умножит числовую колонку номер 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

    1. Simply type 5 in any blank cell. You can delete that later.
    2. Copy that cell
    3. Select Range A1:A10
    4. Right click on it
    5. Click on Paste Special | Values - Multiply as shown below and you are done.

    Before

    enter image description here

    After

    enter image description here

    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%, при этом чтобы в листе не было формул.

    Пример листа:

    Умножение выделенных ячеек на число в Excel

    Решить данную задачу поможет функция «Специальная вставка». Сначала нужно в любую ячейку вставить число, на которое будем умножать ячейки (например «1,2»). И скопировать эту ячейку.

    Далее нужно выделить нужные ячейки и в контекстном меню выбрать «Специальная вставка», в нем выбрать «умножить»:

    Округление значений в ячейках

    Если требуется округлить значения, то можно воспользоваться панелью «число» в вкладке «Главная» и убрать разряды у выделенных ячеек:

    Панель «число» в Excel

    Или выделить нужные ячейки и в контекстном меню выбрать «формат ячеек», далее задать числовой формат и убрать десятичные знаки.

    Округление в формате ячеек Excel

    Результат:

    Округлённые ячейки в Excel

    Умножение и деление, сложение и вычитание, возведение в степень и извлечение корня, все эти действия можно производить с диапазонами числовых значений в таблицах Excel. Осуществлять математические действия между диапазоном числовых значений и заданным числом можно различными способами, об этом и пойдет речь далее.

    Для примера возьмем классическую задачу — умножить или разделить столбец значений на одно и то же число, но будем иметь в виду, что вместо столбца можно рассматривать диапазон ячеек любого произвольного размера, а вместо умножения и деления можно производить и другие математические действия. Такая задача возникает при различных преобразованиях числовых значений, например при переводе километров в метры, тысяч рублей в рубли, рублей в доллары и так далее.

    Как умножить столбец ячеек на число при помощи формул?

    Наиболее распространенный способ умножения числовых значений диапазона, в нашем случае столбца, заключается в использовании функции (формулы). Здесь тоже возможны варианты, можно использовать формулу с относительными ссылками,

    formula-s-otnositelnymi-ssylkami

    а можно с абсолютными, когда адрес ячейки закрепляется при помощи специальных значков $ и остается неизменным при копировании формулы.

    formula-s-absolyutnymi-ssylkami

    Конечный результат одинаковый при разном количестве значений на рабочем листе. Этот способ целесообразно использовать тогда, когда необходимо, чтобы производился пересчет всего диапазона при изменении множителя. В случае, если пересчет не требуется, быстрее и удобнее использовать способ, при котором значения ячеек заменяются результатами умножения.

    Умножение диапазона ячеек на число с использованием специальной вставки

    Столбец с вычисляемыми по формулам значениями нужен далеко не всегда. Часто возникает необходимость просто заменить значения столбца новыми значениями, которые получены умножением старых значений на заданное число. При этом можно обойтись без всяких функций и формул, достаточно скопировать число-множитель, выделить нужный диапазон значений, выбрать из контекстного меню (которое появляется после нажатия правой кнопки мыши) пункт «Специальная вставка», в разделе «Операция» выбрать опцию «Умножить» и нажать «ОК».

    специальная вставка операций в excel

    Исходный диапазон значений заменяется значениями, полученными умножением первоначальных чисел на скопированное число. Использование этого метода позволяет не только умножать столбец или диапазон на число, но и производить другие математические действия, такие как деление, сложение и вычитание.

    Как умножить столбец на число при помощи надстройки?

    Вышеизложенные методы, как правило, закрывают потребности большей части пользователей, но не всегда удобны в использовании, например при проведении многократных операций, когда столбец значений умножается на число, после этого проверяется какое-либо условие и по результатам этой проверки действие повторяется. При решении таких задач удобным инструментом может служить надстройка для Excel, которая позволяет заменять значения ячеек результатами вычислений.

    замена значений ячеек результатами вычислений

    При помощи надстройки можно не только умножать, делить, складывать и вычитать, но и возводить числа в степень и извлекать корень, выбрав нужное математическое действие из выпадающего списка в диалоговом окне.

    Использование надстройки позволяет:

    1) Выбирать диапазон ячеек, либо работать с используемым диапазоном (от первой заполненной ячейки рабочего листа до последней заполненной ячейки);

    2) задавать число в диалоговом окне надстройки;

    3) выбирать одно из шести математических действий, которое будет производиться между всеми числовыми значениями выбранного диапазона и заданным числом;

    4) автоматически заменять числовые значения диапазона результатами вычислений.

    Видео по работе с надстройкойsmotret-video

    выполнение математических операций между диапазоном и числомCompleteSolutionнадстройка для проведения математических операций между заданным числом и диапазоном значений

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

    Суть проблемы следующая. ПО выводит шаблон, где в значениях в столбце 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

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