VBA сума функция (диапазони, колони и др.)

Този урок ще ви покаже как да използвате функцията Excel Sum в VBA

Сумата е една от най -широко използваните функции на Excel и вероятно първата, която потребителите на Excel се научават да използват. VBA всъщност няма еквивалент - потребителят трябва да използва вградената функция Excel във VBA, използвайки WorkSheetFunction обект.

Обобщен работен лист Функция

Обектът WorksheetFunction може да се използва за извикване на повечето от функциите на Excel, които са налични в диалоговия прозорец Вмъкване на функция в Excel. Функцията SUM е една от тях.

123 Субтестова функцияДиапазон ("D33") = Application.WorksheetFunction.Sum ("D1: D32")End Sub

Можете да имате до 30 аргумента във функцията SUM. Всеки от аргументите може да се отнася и за диапазон от клетки.

Този пример по -долу ще добави клетки D1 ​​до D9

123 Sub TestSum ()Диапазон ("D10") = Application.WorksheetFunction.SUM ("D1: D9")End Sub

Примерът по -долу ще добави диапазон в колона D и диапазон в колона F. Ако не въведете обекта Application, той ще се приеме.

123 Sub TestSum ()Диапазон ("D25") = Функция на работен лист.SUM (Обхват ("D1: D24"), Обхват ("F1: F24"))End Sub

Забележете, че за един диапазон от клетки не е нужно да указвате думата „Обхват“ във формулата пред клетките, това се приема от кода. Ако обаче използвате множество аргументи, трябва да го направите.

Присвояване на резултат Sum на променлива

Може да искате да използвате резултата от формулата си другаде в кода, вместо да го пишете директно обратно в и Excel диапазон. Ако случаят е такъв, можете да присвоите резултата на променлива, която да използвате по -късно във вашия код.

1234567 Sub AssignSumVariable ()Затъмнете резултата като двоен'Задайте променливатаresult = WorksheetFunction.SUM (Диапазон ("G2: G7"), Диапазон ("H2: H7"))'Покажете резултатаMsgBox "Общият обхват е" & резултатEnd Sub

Сумирайте обект от диапазон

Можете да присвоите група клетки на обекта Range и след това да използвате този Range обект с Работен лист Функция обект.

123456789 Sub TestSumRange ()Dim rng As Range'задайте диапазона от клеткиЗадайте rng = Обхват ("D2: E10")'използвайте диапазона във формулатаДиапазон ("E11") = Функция на работен лист.SUM (rng)'освободете обекта rangeЗадайте rng = НищоEnd Sub

Сумиране на обекти с множество обхвати

По същия начин можете да сумирате множество Range Objects.

123456789101112 Sub TestSumMultipleRanges ()Dim rngA As RangeDim rngB като Range'задайте диапазона от клеткиЗадайте rngA = Обхват ("D2: D10")Задайте rngB = Обхват ("E2: E10")'използвайте диапазона във формулатаДиапазон ("E11") = Функция на работен лист.SUM (rngA, rngB)'освободете обекта rangeЗадайте rngA = НищоЗадайте rngB = НищоEnd Sub

Сума цяла колона или ред

Можете също да използвате функцията Sum, за да добавите цяла колона или цял ред

Тази процедура по -долу ще добави всички числови клетки в колона D.

123 Sub TestSum ()Диапазон ("F1") = Работен лист Функция.SUM (Обхват ("D: D")End Sub

Докато тази процедура по -долу ще добави всички цифрови клетки в ред 9.

123 Sub TestSum ()Диапазон ("F2") = Работен лист Функция.SUM (Обхват ("9: 9")End Sub

Сумирайте масив

Можете също да използвате WorksheetFunction.Sum, за да добавите стойности в масив.

123456789101112 Sub TestArray ()Dim intA (1 до 5) като цяло числоDim SumArray като цяло число'попълнете масиваintA (1) = 15intA (2) = 20intA (3) = 25intA (4) = 30intA (5) = 40'добавете масива и покажете резултатаMsgBox WorksheetFunction.SUM (intA)End Sub

Използване на функцията SumIf

Друга функция на работен лист, която може да се използва, е функцията SUMIF.

123 Sub TestSumIf ()Диапазон ("D11") = Функция на работен лист.SUMIF (Обхват ("C2: C10"), 150, Обхват ("D2: D10"))End Sub

Горната процедура ще добави клетките в диапазон (D2: D10) само ако съответната клетка в колона C = 150.

Формула на сумата

Когато използвате Работен лист Функция.SUM за да добавите сума към диапазон във вашия работен лист, се връща статична сума, а не гъвкава формула. Това означава, че когато вашите цифри в Excel се променят, стойността, която е била върната от Работен лист Функция няма да се промени.

В горния пример процедурата TestSum добави Range (D2: D10) и резултатът беше поставен в D11. Както можете да видите в лентата с формули, този резултат е цифра, а не формула.

Следователно, ако някоя от стойностите се промени в диапазона (D2: D10), резултатът в D11 ще бъде НЕ промяна.

Вместо да използвате Работен лист Функция.SUM, можете да използвате VBA, за да приложите сумарна функция към клетка, използвайки Формула или Формула R1C1 методи.

Метод на формулата

Методът на формулата ви позволява да посочите конкретно диапазон от клетки, например: D2: D10, както е показано по -долу.

123 Sub TestSumFormulaОбхват ("D11"). Формула = "= SUM (D2: D10)"End Sub

Формула Метод R1C1

Методът FromulaR1C1 е по -гъвкав, тъй като не ви ограничава до определен диапазон от клетки. Примерът по -долу ще ни даде същия отговор като този по -горе.

123 Sub TestSumFormula ()Обхват ("D11"). Формула R1C1 = "= SUM (R [-9] C: R [-1] C)"End Sub

За да направим формулата по -гъвкава, бихме могли да променим кода така, че да изглежда така:

123 Sub TestSumFormula ()ActiveCell.FormulaR1C1 = "= SUM (R [-9] C: R [-1] C)"End Sub

Където и да сте в работния си лист, формулата ще добави 8 -те клетки директно над него и ще постави отговора във вашия ActiveCell. Обхватът във функцията SUM трябва да бъде посочен чрез синтаксиса на ред (R) и колона (C).

И двата метода ви позволяват да използвате формули за динамичен Excel в рамките на VBA.

Сега ще има формула в D11 вместо стойност.

Така ще помогнете за развитието на сайта, сподели с приятелите си

wave wave wave wave wave