Този урок ще ви покаже как да използвате функцията 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 вместо стойност.