Макрос excel сумма по строкам

New,  я про то , что на какой из вопросов  отвечают формулы?

Цитата
Зара За написал:
не работает формула СУММ(ЕСЛИ(ОСТАТ(СТРОКА(J5:J22);2)=0;J5:J22,0))

или

Цитата
Зара За написал:
Как написать макрос для подсчета суммы столбца, где считать каждую вторую ячейку?

???

А тема однозначно про vba

Цитата
Зара За написал:
Как макросом считать суммы каждой n-й строки или столбца?

Цитата
Kuzmich написал:
Кросс

Вот ведь зараза, тут формула не работает, там макрос …. :-)

Зара За, С правилами форумов и крос постинге нужно ознакамливаться и тут и там!!!. Там про макрос ответили.
формула приведенная вами прекрасно работает, но она массивная и если Excel не свежий то нужно вводит не просто с Enter, поищите про формулы масссивов.
кстати её сможно упрстить
и свести до
=SUM(IF(MOD(ROW(J5:J22);2);;(J5:J22)))
хотя можно обойтись без массивногоо ввода
=SUMPRODUCT((MOD(ROW(J5:J22);2)=0)*(J5:J22))
=SUMIF(B5:B28;»»;J5:J28)
в вашем случае что будет очень эффективно или
=SUMIF(B5:B28;»<>»;J6:J29) что даст возможность пс привязкой к заполненной ячейке брать вторую ячейку после нее, а это дает возможность братьо третью и  т.д.

In Excel, you can use VBA to calculate the sum of values from a range of cells or multiple ranges. And, in this tutorial, we are going to learn the different ways that we can use this.

Sum in VBA using WorksheetFunction

In VBA, there are multiple functions that you can use, but there’s no specific function for this purpose. That does not mean we can’t do a sum. In VBA, there’s a property called WorksheetFunction that can help you to call functions into a VBA code.

sum-in-vba-using-worksheet

Let sum values from the range A1:A10.

  1. First, enter the worksheet function property and then select the SUM function from the list.
    2-enter-worksheet-function
  2. Next, you need to enter starting parenthesis as you do while entering a function in the worksheet.
    3-starting-parenthesis
  3. After that, we need to use the range object to refer to the range for which we want to calculate the sum.
    4-use-the-range-object
  4. In the end, type closing parenthesis and assign the function’s returning value to cell B1.
    5-closing-parenthesis
Range("B1") = Application.WorksheetFunction.Sum(Range("A1:A10"))

Now when you run this code, it will calculate the sum for the values that you have in the range A1:A10 and enter the value in cell B1.

run-the-code-to-calculate

Sum Values from an Entire Column or a Row

In that just need to specify a row or column instead of the range that we have used in the earlier example.

'for the entire column A
Range("B1") = Application.WorksheetFunction.Sum(Range("A:A"))

'for entire row 1
Range("B1") = Application.WorksheetFunction.Sum(Range("1:1"))

Use VBA to Sum Values from the Selection

Now let’s say you want to sum value from the selected cells only in that you can use a code just like the following.

Sub vba_sum_selection()

Dim sRange As Range
Dim iSum As Long

On Error GoTo errorHandler

Set sRange = Selection

iSum = WorksheetFunction.Sum(Range(sRange.Address))
MsgBox iSum

errorHandler:
MsgBox "make sure to select a valid range of cells"

End Sub

In the above code, we have used the selection and then specified it to the variable “sRange” and then use that range variable’s address to get the sum.

The following code takes all the cells and sum values from them and enters the result in the selected cell.

Sub vba_auto_sum()

Dim iFirst As String
Dim iLast As String
Dim iRange As Range

On Error GoTo errorHandler

iFirst = Selection.End(xlUp).End(xlUp).Address
iLast = Selection.End(xlUp).Address

Set iRange = Range(iFirst & ":" & iLast)
ActiveCell = WorksheetFunction.Sum(iRange)

Exit Sub

errorHandler:
MsgBox "make sure to select a valid range of cells"

End Sub

Sum a Dynamic Range using VBA

And in the same way, you can use a dynamic range while using VBA to sum values.

Sub vba_dynamic_range_sum()

Dim iFirst As String
Dim iLast As String
Dim iRange As Range

On Error GoTo errorHandler

iFirst = Selection.Offset(1, 1).Address
iLast = Selection.Offset(5, 5).Address

Set iRange = Range(iFirst & ":" & iLast)
ActiveCell = WorksheetFunction.Sum(iRange)

Exit Sub

errorHandler:
MsgBox "make sure to select a valid range of cells"

End Sub

Sum a Dynamic Column or a Row

In the same way, if you want to use a dynamic column you can use the following code where it will take the column of the active cell and sum for all the values that you have in it.

Sub vba_dynamic_column()

Dim iCol As Long

On Error GoTo errorHandler

iCol = ActiveCell.Column
MsgBox WorksheetFunction.Sum(Columns(iCol))

Exit Sub

errorHandler:
MsgBox "make sure to select a valid range of cells"

End Sub

And for a row.

Sub vba_dynamic_row()

Dim iRow As Long

On Error GoTo errorHandler

iRow = ActiveCell.Row

MsgBox WorksheetFunction.Sum(Rows(iCol))

Exit Sub

errorHandler:
MsgBox "make sure to select a valid range of cells"

End Sub

Using SUMIF with VBA

Just like sum you can use the SUMIF function to sum values with criteria just like the following example.

sumif-with-vba
Sub vba_sumif()

Dim cRange As Range
Dim sRange As Range

Set cRange = Range("A2:A13")
Set sRange = Range("B2:B13")

Range("C2") = _
WorksheetFunction.SumIf(cRange, "Product B", sRange)

End Sub

Содержание

  • Суммирование значений в строке
    • Способ 1: арифметическая формула
    • Способ 2: автосумма
    • Способ 3: функция СУММ
    • Способ 4: массовое суммирование значений в строках
  • Вопросы и ответы

Суммирование значений в строке в Microsoft Excel

Работая с таблицами, часто приходится подбивать общие итоги по конкретному наименованию. В качестве данного наименования может выступать название контрагента, фамилия работника, номер подразделения, дата и т.д. Нередко эти наименования являются заглавием строк и поэтому, чтобы подсчитать общий итог по каждому элементу, приходится суммировать содержимое ячеек конкретной строки. Иногда сложение данных в строках производят и в иных целях. Давайте разберем различные способы, как это можно сделать в программе Excel.

Читайте также: Как посчитать сумму в Экселе

Суммирование значений в строке

По большому счету, просуммировать в Экселе значения в строке можно тремя основными способами: использование арифметической формулы, применение функций и автосуммы. При этом, данные способы могут делиться ещё на ряд более конкретизированных вариантов.

Способ 1: арифметическая формула

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

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

Таблица дохода магазинов в Microsoft Excel

  1. Выделяем ячейку, в которую будет выводиться готовый результат подсчета итога. Ставим туда знак «=». Кликаем левой кнопкой мыши по первой ячейке в данной строке, которая содержит числовые значения. Как видим, её адрес тут же отобразится в элементе для вывода суммы. Ставим знак «+». Затем кликаем по следующей ячейке в строке. Таким способом чередуем знак «+» с адресами ячеек строчки, которая относится к первому магазину.

    В итоге в конкретно нашем случае получается следующая формула:

    =B3+C3+D3+E3+F3+G3+H3

    Естественно, при использовании других таблиц вид её будет отличаться.

  2. Формула сложения в Microsoft Excel

  3. Для выведения общей суммы выручки по первой торговой точке жмем на кнопку Enter на клавиатуре. Результат выводится в ту ячейку, в которой была расположена формула.

Результат формулы сложения в Microsoft Excel

Как видим, данный способ довольно простой и интуитивно понятный, но у него имеется один существенный недостаток. На его осуществление нужно потратить много времени, если сравнивать с теми вариантами, которые мы рассмотрим ниже. А если в таблице очень много столбцов, то временные затраты увеличатся ещё больше.

Способ 2: автосумма

Гораздо более быстрым способом сложить данные в строчке является применение автосуммы.

  1. Выделяем все ячейки с числовыми значениями первой строчки. Выделение проводим, зажав левую кнопку мыши. Перейдя во вкладку «Главная», жмем на значок «Автосумма», который расположен на ленте в блоке инструментов «Редактирование».
    Вызов автосуммы через вкладку Главная в Microsoft Excel

    Другим вариантом вызова автосуммы является переход во вкладку «Формулы». Там в блоке инструментов «Библиотека функций» на ленте следует щелкнуть по кнопке «Автосумма».

    Lumpics.ru

    Вызоов автосуммы через вкладку Формулы в Microsoft Excel

    Если же вы вообще не хотите перемещаться по вкладкам, то после выделения строчки можно просто набрать сочетание горячих клавиш Alt+=.

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

Автосумма подсчитана в Microsoft Excel

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

Способ 3: функция СУММ

Преодолеть недостатки двух вышеописанных способов может вариант с применением встроенной функции Excel под названием СУММ.

Оператор СУММ принадлежит к группе математических функций Эксель. Его задачей является суммирование чисел. Синтаксис этой функции имеет такой вид:

=СУММ(число1;число2;…)

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

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

  1. Выделяем любую пустую ячейку на листе, куда предполагаем выводить итог вычисления. При желании можно её выбрать даже на другом листе книги. Но подобное бывает все-таки редко, так как в большинстве случаев более удобно традиционно располагать ячейку для вывода итогов в той же строке, в которой находятся расчетные данные. После того, как выделение произведено, щелкаем по значку «Вставить функцию» слева от строки формул.
  2. Переход в Мастер функций в Microsoft Excel

  3. Запускается инструмент, который носит наименование Мастер функций. Переходим в нем в категорию «Математические» и из открывшегося списка операторов выбираем название «СУММ». Затем кликаем по кнопке «OK» внизу окошка Мастера функций.
  4. Переход в окно аргументов функции СУММ в Microsoft Excel

  5. Производится активация окна аргументов оператора СУММ. В этом окне может располагаться до 255 полей, но для решения нашей задачи понадобится всего одно поле – «Число1». В него нужно ввести координаты той строки, значения в которой следует сложить. Для этого ставим курсор в указанное поле, а затем, произведя зажим левой кнопкой мыши, выделяем курсором весь числовой диапазон нужной нам строчки. Как видим, адрес данного диапазона тут же будет отображен в поле окна аргументов. Затем щелкаем по кнопке «OK».
  6. Окно аргументов функции СУММ в Microsoft Excel

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

Результат вычисления функции СУММ в Microsoft Excel

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

Урок: Мастер функций в Экселе

Способ 4: массовое суммирование значений в строках

Но что делать, если нужно просуммировать не одну и не две строчки, а, скажем 10, 100 или даже 1000? Неужели для каждой строки требуется в отдельности применять вышеописанные действия? Как оказывается, совсем не обязательно. Для этого нужно просто скопировать формулу суммирования в другие ячейки, в которые вы планируете выводить сумму по остальным строчкам. Сделать это можно при помощи инструмента, который носит наименование маркера заполнения.

  1. Производим сложение значений в первой строке таблицы любым из тех способов, которые были описаны ранее. Ставим курсор в нижний правый угол ячейки, в которой отображается результат применяемой формулы или функции. При этом курсор должен изменить свой внешний вид и преобразоваться в маркер заполнения, который выглядит, как небольшой крестик. Затем зажимаем левую кнопку мыши и перетаскиваем курсор вниз, параллельно ячейкам с наименованиями строк.
  2. Маркер заполнения в Microsoft Excel

  3. Как видим, все ячейки были заполнены данными. Это и есть сумма значений отдельно по строкам. Такой результат удалось получить потому, что по умолчанию все ссылки в Excel относительны, а не абсолютны, и при копировании изменяют свои координаты.

Итог суммирования по строкам в Microsoft Excel

Урок: Как сделать автозаполнение в Экселе

Как видим, в Экселе существует три основных способа подсчитать сумму значений в строчках: арифметическая формула, автосумма и функция СУММ. Каждый из данных вариантов имеет свои достоинства и недостатки. Наиболее интуитивно простой способ – это применение формулы, самый быстрый вариант – автосумма, а самый универсальный – использование оператора СУММ. Кроме того, с помощью маркера заполнения можно проводить массовое суммирование значений по строкам, выполненное одним из трех способов, которые были перечислены выше.

Вычисление суммы числовых аргументов или значений диапазона ячеек с помощью кода VBA Excel. Метод WorksheetFunction.Sum – синтаксис, примеры.

Метод Sum объекта WorksheetFunction возвращает сумму значений своих аргументов. Аргументы могут быть числами, переменными и выражениями, возвращающими числовые значения.

Синтаксис метода WorksheetFunction.Sum:

WorksheetFunction.Sum(Arg1, Arg2, Arg3, ..., Arg30)

  • Arg – аргумент, который может быть числом, переменной, выражением. Тип данных — Variant. Максимальное количество аргументов – 30.
  • Метод WorksheetFunction.Sum возвращает значение типа Double.

Значение функции рабочего листа Sum может быть присвоено:

  • переменной числового типа Double или универсального типа Variant (при использовании числовых переменных других типов возможны недопустимые округления значений, возвращаемых методом WorksheetFunction.Sum);
  • выражению, возвращающему диапазон ячеек (точнее, возвращающему свойство Value диапазона, которое является свойством по умолчанию и его в выражениях можно не указывать);
  • другой функции в качестве аргумента.

Примеры вычисления сумм в коде VBA

Пример 1

Присвоение значений, вычисленных методом WorksheetFunction.Sum, переменной:

Sub Primer1()

Dim a As Integer

  a = WorksheetFunction.Sum(5.5, 25, 8, 28)

MsgBox a

  a = WorksheetFunction.Sum(4.5, 25, 8, 28)

MsgBox a

End Sub

Наверно, вы удивитесь, но информационное окно MsgBox дважды покажет одно и то же число 10. Почему так происходит?

Дело в том, что переменная a объявлена как целочисленная (Integer). Дробные числа, возвращенные функцией рабочего листа Sum, были округлены, а в VBA Excel применяется бухгалтерское округление, которое отличается от общепринятого.

При бухгалтерском округлении 10.5 и 9.5 округляются до 10. Будьте внимательны при выборе типа переменной.

Пример 2

Вычисление суммы значений диапазона ячеек, расположенного на текущем листе:

Sub Primer2()

‘Итог в 6 ячейке столбца «A»

Cells(6, 1) = WorksheetFunction.Sum(Cells(1, 1), Cells(2, 1), _

Cells(3, 1), Cells(4, 1), Cells(5, 1))

‘Итог в 6 ячейке столбца «B»

Range(«B6») = WorksheetFunction.Sum(Range(Cells(1, 2), Cells(5, 2)))

‘Итог в 6 ячейке столбца «C»

Range(«B6»).Offset(, 1) = WorksheetFunction.Sum(Range(«C1:C5»))

‘Присвоение суммы диапазону ячеек

Range(«A8:C10») = WorksheetFunction.Sum(Range(«A1:C5»))

End Sub

Если хотите проверить работу кода в своем редакторе VBA, заполните на рабочем листе Excel диапазон A1:C5 любыми числами.

Самая удобная формулировка по моему мнению:

Cells(10, 6) = WorksheetFunction.Sum(Range(Cells(2, 6), Cells(9, 6))) ,

где вместо номеров строк и столбцов можно использовать переменные.

Пример 3

Вычисление суммы значений диапазона ячеек, расположенного на другом листе:

Sub Primer3()

Лист1.Cells(3, 10) = WorksheetFunction.Sum(Range(Лист2.Cells(2, 5), Лист2.Cells(100, 5)))

End Sub

Пример 4

Самый простой пример, где метод WorksheetFunction.Sum используется в качестве аргумента другой функции:

Sub Primer4()

MsgBox WorksheetFunction.Sum(24, 5, 8 * 2)

End Sub

В данном случае значение функции рабочего листа Sum является аргументом функции MsgBox.


Возможно, вам интересно, откуда я взял, что функция рабочего листа (WorksheetFunction) является объектом, а сумма (Sum) ее методом? Из справки Microsoft.

Смотрите также статьи о методах WorksheetFunction.SumIf (суммирование с одним условием) и WorksheetFunction.SumIfs (суммирование с несколькими условиями).


0 / 0 / 0

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

Сообщений: 7

1

Макрос для подсчета сумм по строкам

16.04.2013, 10:44. Показов 4116. Ответов 13


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

Всем привет, проблема вот в чем:
В Excel для одной строки на каждую ячейку сделал свою кнопку с макросом, т.е. A1 считает свою сумму, B1 свою, C1 свою и т.д. Теперь встал вопрос, как сделать что бы эти же кнопки считали уже не первую строку а вторую, при чем первую строку уже не меняя?
Можно конечно на каждую строку написать по 20 макросов, ну а если их 200, как у меня например)

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



0



5590 / 1580 / 406

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

Сообщений: 2,366

Записей в блоге: 1

16.04.2013, 11:36

2

Непонятна необходимость всего этого.
Выложи свой файл.



0



0 / 0 / 0

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

Сообщений: 7

17.04.2013, 11:47

 [ТС]

3

Пока выложить файл не имею возможности но попробую объяснить.

Ячейка А1 — кол-во ед. оборудования
Ячейка B1 — Стоимость оборудования без НДС
Для ячейки С1 — создал кнопку и присвоил её макрос выполняющий действие А1*B1*1.18 т.е. кол-во оборудования с НДС
Это я сделал для одной номенклатуры, а у меня их 200. Можно сделать одну кнопку на весь столбец «C» например, но не могу сообразить как написать макрос что бы эта кнопка считала ту строку которую мне нужно.

Допустим мне надо рассчитать НДС в строках 1,5,119 и 187 и не рассчитывать другие строки, как это сделать одной кнопкой?



0



693 / 99 / 10

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

Сообщений: 718

17.04.2013, 11:53

4

Технико, давайте сюда свой код



0



1121 / 229 / 36

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

Сообщений: 698

17.04.2013, 12:18

5

Ради прикола написал макрос. Выбираешь ячейки в столбце А, в толбце С появляется произведение A*C*1.18. Хотя я не понимаю для чего это нужно.



0



5590 / 1580 / 406

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

Сообщений: 2,366

Записей в блоге: 1

17.04.2013, 17:27

6

А почему в ячеке С1 просто не написать формулу (латинскими буквами) = A1*B1*1.18 ? А потом ее не скопировать на все нужные ячейки?



0



0 / 0 / 0

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

Сообщений: 7

19.04.2013, 05:42

 [ТС]

7

SlavaRus, как посмотреть что ты сделал, где код увидеть можно? Я не могу загрузить файл свой, формат не поддерживает, у меня сохранено в формате Excel с поддержкой макросов, в чем сохранять то нужно?

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



0



1121 / 229 / 36

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

Сообщений: 698

19.04.2013, 08:14

8

Код находится в листе. Правой клавишей мышки щелкни на ярлычке листа и выбери исходный код. CTRL+F3 для просмотра формулы.



0



0 / 0 / 0

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

Сообщений: 7

19.04.2013, 10:23

 [ТС]

9

SlavaRus, это не много не то, о чем я говорю, но мне и такого ни когда не сделать самому)
Если смотреть на твою таблицу, то в ячейке А2 должно быть поле для ввода, в котором мы указываем номер строки с которой собираемся работать, а в ячейке С2 должна быть кнопка «с НДС», при нажатии на которую рассчитывается стоимость с НДС в той строке в которой мы работаем в данный момент.



0



1121 / 229 / 36

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

Сообщений: 698

19.04.2013, 11:19

10

Вложи книгу с примером. Что будет происходить при введении номера строки в А2. Введенная строка должна активироваться, или будут введены данные где то еще и после скопированы. Почему сразу не нарезать формулы в столбце С где считается сумма с НДС, а нужно нажать на кнопку? Может проще сделать форму, где будут вводиться данные и после ввода скопировать в нужно место. В общем задача непонятна.



0



0 / 0 / 0

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

Сообщений: 7

22.04.2013, 06:17

 [ТС]

11

Объясняю таблицу:
Если центр закуп финансирование: выбрать квартал финансирования, дец закуп финансирование не активен, указать квартал отпуска с УМТС.
Если дец. закуп финансирование: выбрать квартал финансирования, центр закуп не активен, отпуск с УМТС не активен.
Отпуск с УМТС: ИТОГО=1кв.+2кв.+3кв.+4кв. (Квартал = кол-во*стоимость без НДС)
Накладные расходы: в зависимости от доставки: Вода — 5%, Дорога — 11%, Авиа — 15%.
Счет 08 и счет 01, соответственно выбираем кварталы



0



0 / 0 / 0

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

Сообщений: 7

22.04.2013, 06:21

 [ТС]

12

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



0



5590 / 1580 / 406

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

Сообщений: 2,366

Записей в блоге: 1

22.04.2013, 10:25

13

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



0



0 / 0 / 0

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

Сообщений: 7

22.04.2013, 10:58

 [ТС]

14

KoGG, и мне тысяча человек звонит и спрашивает один и тот же вопрос: Сколько у нас сейчас таможня, сколько в 2013 году процентов вода… и т.д.
Хочется что бы это все дело работало так, что бы не дать ошибиться людям при внесении данных.
Из опыта работы с людьми можно сделать вывод: если предоставить им самостоятельную работу с данными — они там такого нагородят… что черт ногу сломит)



0



Понравилась статья? Поделить с друзьями:
  • Макрос excel столбец в строку в excel
  • Макрос excel создать документ
  • Макрос excel создает таблицу
  • Макрос excel создает документ
  • Макрос excel собирать файлы в один