Составить программу вычисления значения функции vba

Метод 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, переменной:

#02. Как написать функцию | VBA Excel

Sub Primer1 ( )
Dim a As Integer
a = WorksheetFunction . Sum ( 5.5 , 25 , 8 , — 28 )
a = WorksheetFunction . Sum ( 4.5 , 25 , 8 , — 28 )

Наверно, вы удивитесь, но информационное окно 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» ) )

Если хотите проверить работу кода в своем редакторе 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 ) ) )

Пример 4

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

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

Функции в VBA — (Серия VBA 19 — Часть 1: Теоретический базис)

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

15 комментариев для “VBA Excel. Метод WorksheetFunction.Sum – сумма аргументов”

Подскажите, можно ли таким образом WorksheetFunction.Sum(Range(Cells(1, 2), Cells(5, 2))) выделить несколько несмежных диапазонов? С указанием столбцов и строк вроде как можно. А вот указать несколько диапазонов через cells (x,y) — это возможно?

WorksheetFunction . Sum ( Range ( Cells ( 1 , 2 ) , Cells ( 5 , 2 ) ) , Range ( Cells ( 3 , 4 ) , Cells ( 7 , 5 ) ) )

Union ( Range ( Cells ( 1 , 2 ) , Cells ( 5 , 2 ) ) , Range ( Cells ( 3 , 4 ) , Cells ( 7 , 5 ) ) ) . Select

Cells ( 10 , 6 ) . Value = Application . Sum ( Range ( Cells ( 2 , 6 ) , Cells ( 9 , 6 ) ) )
Какие преимущества/недостатки каждого из них?

Application.Sum и WorksheetFunction.Sum – два способа записи одной и той же функции. Отличие в том, что запись Application.Sum не упоминается в документации по VBA Excel, хотя и работает, как и другие встроенные функции рабочего листа. Я предпочитаю запись WorksheetFunction.Sum.

Читайте также:
Установка программ Яндекс услуги

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

PosStr — переменная с последней ячейкой

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

Private Sub CommandButton1_Click ( )
PosStr = WorksheetFunction . CountA ( Лист 2.Range ( «A:A» ) ) + 1
Лист 2.Cells ( PosStr , 1 ) = TextBox1 . Value
Лист 2.Cells ( PosStr , 1 + 1 ) = ComboBox1 . Value
Лист 2.Cells ( PosStr , 1 + 2 ) = Date

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

‘Worksheets(«Лист2»).
‘Лист1.Cells(3, 10) = WorksheetFunction.Sum(Лист2.Range(2, 1), Лист2.Range(2, PosStr))
TextBox1 . Text = «»
ComboBox1 . Clear
ComboBox1 . Text = «»
Будет отлично, если Вы поможете решить эту задачку.
Заранее спасибо!

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

‘и, если ошибка повторится

Sheets ( «Лист1» ) . Cells ( 3 , 10 ) = WorksheetFunction . Sum ( Range ( Sheets ( «Лист2» ) . Cells ( 2 , 1 ) , Sheets ( «Лист2» ) . Cells ( 10 , 1 ) ) )

  • Лист1.Cells(3, 10) : Лист1 — имя листа в проводнике редактора VBA;
  • Sheets(«Лист1») : Лист1 — имя ярлычка.

Добрый день!
Можно ли использовать данную функцию, если необходимо сложить одинаковые ячейки, но в разных книгах?
У меня 50 разных файлов, одинаковых по структуре, необходимо свести все данные в 1 общий файл, сохранив структуру.

WorksheetFunction вам не подойдет, так как эта функция может обработать только 30 аргументов.

Добрый день!
Каким образом в таком случае лучше записать макрос? может быть, есть какой-то подходящий пример?

Здравствуйте, Анна!
Смотрите примеры в статье Сбор данных из открытых книг.

Доброго вечера!
Можно ли этой функцией суммировать необходимый диапазон в массиве? Есть массив с числами, нужно постоянно сдвигать диапазон суммирования и возвращать сумму для формулы. Как лучше сделать?

Здравствуйте. Пытаюсь запустить по кнопке на листе 1, а сумму взять с неактивного листа, но выдает ошибку:
Application-defined or object-defined error
summaSt = Application.Sum(.Range(Cells(6, i), Cells(6, i + kolvoSt — 1)))
так тоже не выходит
With Worksheets(«Result_Inj»)
summaSt = Application.Sum(.Range(Cells(6, i), Cells(6, i + kolvoSt — 1)))
End With
Если перейти на лист Result_Inj, то все работает без With Worksheets(«Result_Inj») Я так понял, сумму можно посчитать исключительно на активном листе? Не даром пишется Worksheet. Есть ли способ кроме дедовского, складывать каждую ячейку?

Читайте также:
Как написать дос программу

Добрый день!
Если вы используете оператор With, не забывайте проставлять точки не только перед .Range , но и перед .Cells , так как Cells без точки — это ячейка на активном листе.

Источник: vremya-ne-zhdet.ru

Презентация на тему Программирование на языке Visual Basic for Applications (VBA)

Программирование на языке Visual Basic for Applications (VBA)

Вид/Макрос/Имя/Создать (или Alt/F11).
Возвратиться из редактора VBA в рабочую книгу можно нажатием кнопки Вид/Microsoft Excel (или Alt/F11).
Приостановить программу можно нажатием кнопок Ctrl/Pause Break.
Для запуска программы из редактора — клавиша F5. Для запуска программы из документа — alt+F8

Для создания программы на VBA необходимо находясь, например, в рабочей книге Excel,

Слайд 62. Типы данных и переменные

2. Типы данных и переменные

Слайд 7Ключевые слова — это слово или символ,

которые являются элементом VBA (инструкция, имя функции,

Операторы используются для объединения простых выражений в более сложные. Они выполняют арифметические, логические операции, а также операции сравнения и конкатенации «
2) вычисления встроенных функций;
3) возведение в степень;
4) операции умножения и деления;
5) операции целочисленного деления;
6) операции деления по модулю;
7) операции сложения и вычитания.
Операции равного старшинства выполняются по порядку слева направо.
Исключение: А^В^С=А^(В^С).

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

Слайд 22IV. Тип арифметического выражения определяется типом его

результата: а) операция деления (« ») с

целыми величинами дает вещественный результат; б) выражение может содержать и целые и вещественные величины. Результат такого выражения — вещественная величина; в) при наличии в арифметическом выражении величин двойной точности результатом будет величина той же точности.

IV. Тип арифметического выражения определяется типом его результата: а) операция деления («

Слайд 23

Слайд 24
1) 3arctgX+e5,11-2e → 3*atn(x)+exp(5.11)-2*exp(1)

1) 3arctgX+e5,11-2e → 3*atn(x)+exp(5.11)-2*exp(1) 2) -23/4*ctg5x → -(2*3/4)*(1/tan(5*x)) Например:

Слайд 25Самостоятельная работа. Перевести выражения на язык программирования
1)

Y= A2 – C2

4) Z =3.5*4-0.6Y *ln(X+С)

Самостоятельная работа. Перевести выражения на язык программирования 1) Y= A2 – C2

Слайд 26Результат
1) Y= (A^2+C^2)/(A^2-B)

+ SQR (А^2+I^3)

4) Z = 3.5 * 4 ^ (-0.6 * Y) * Log(X+С)

Источник: thepresentation.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru