VBA Sum Function (Ranges, Columns, & More) - Automate Excel
Có thể bạn quan tâm
In this Article
- Sum WorksheetFunction
- Assigning a Sum result to a Variable
- Sum a Range Object
- Sum Multiple Range Objects
- Sum Entire Column or Row
- Sum an Array
- Using the SumIf Function
- Sum Formula
- Formula Method
- FormulaR1C1 Method
This tutorial will show you how to use the Excel Sum function in VBA
The sum function is one of the most widely used Excel functions, and probably the first one that Excel users learn to use. VBA does not actually have an equivalent – a user has to use the built-in Excel function in VBA using the WorkSheetFunction object.
Sum WorksheetFunction
The WorksheetFunction object can be used to call most of the Excel functions that are available within the Insert Function dialog box in Excel. The SUM function is one of them.
Sub TestFunction Range("D33") = Application.WorksheetFunction.Sum("D1:D32") End Sub
You are able to have up to 30 arguments in the SUM function. Each of the arguments can also refer to a range of cells.
This example below will add up cells D1 to D9
Sub TestSum() Range("D10") = Application.WorksheetFunction.SUM("D1:D9") End SubThe example below will add up a range in column D and a range in column F. If you do not type the Application object, it will be assumed.
Sub TestSum() Range("D25") = WorksheetFunction.SUM (Range("D1:D24"), Range("F1:F24")) End SubNotice for a single range of cells you do not have to specify the word ‘Range’ in the formula in front of the cells, it is assumed by the code. However, if you are using multiple arguments, you do need to do so.
Assigning a Sum result to a Variable
You may want to use the result of your formula elsewhere in code rather than writing it directly back to and Excel Range. If this is the case, you can assign the result to a variable to use later in your code.
Sub AssignSumVariable() Dim result as Double 'Assign the variable result = WorksheetFunction.SUM(Range("G2:G7"), Range("H2:H7")) 'Show the result MsgBox "The total of the ranges is " & result End SubSum a Range Object
You can assign a group of cells to the Range object, and then use that Range object with the WorksheetFunction object.
Sub TestSumRange() Dim rng As Range 'assign the range of cells Set rng = Range("D2:E10") 'use the range in the formula Range("E11") = WorksheetFunction.SUM(rng) 'release the range object Set rng = Nothing End SubSum Multiple Range Objects
Similarly, you can sum multiple Range Objects.
Sub TestSumMultipleRanges() Dim rngA As Range Dim rngB as Range 'assign the range of cells Set rngA = Range("D2:D10") Set rngB = Range("E2:E10") 'use the range in the formula Range("E11") = WorksheetFunction.SUM(rngA, rngB) 'release the range object Set rngA = Nothing Set rngB = Nothing End SubSum Entire Column or Row
You can also use the Sum function to add up an entire column or an entire row
This procedure below will add up all the numeric cells in column D.
Sub TestSum() Range("F1") = WorksheetFunction.SUM(Range("D:D") End SubWhile this procedure below will add up all the numeric cells in Row 9.
Sub TestSum() Range("F2") = WorksheetFunction.SUM(Range("9:9") End SubSum an Array
You can also use the WorksheetFunction.Sum to add up values in an array.
Sub TestArray() Dim intA(1 To 5) As Integer Dim SumArray As Integer 'populate the array intA(1) = 15 intA(2) = 20 intA(3) = 25 intA(4) = 30 intA(5) = 40 'add up the array and show the result MsgBox WorksheetFunction.SUM(intA) End SubUsing the SumIf Function
Another worksheet function that can be used is the SUMIF function.
Sub TestSumIf() Range("D11") = WorksheetFunction.SUMIF(Range("C2:C10"), 150, Range("D2:D10")) End SubThe procedure above will only add up the cells in Range(D2:D10) if the corresponding cell in column C = 150.

Sum Formula
When you use the WorksheetFunction.SUM to add a sum to a range in your worksheet, a static sum is returned, not a flexible formula. This means that when your figures in Excel change, the value that has been returned by the WorksheetFunction will not change.

In the example above, the procedure TestSum has added up Range(D2:D10) and the result has been put in D11. As you can see in the formula bar, this result is a figure and not a formula.
If any of the values change therefore in the Range(D2:D10), the result in D11 will NOT change.
Instead of using the WorksheetFunction.SUM, you can use VBA to apply a Sum Function to a cell using the Formula or FormulaR1C1 methods.
Formula Method
The formula method allows you to point specifically to a range of cells eg: D2:D10 as shown below.
Sub TestSumFormula Range("D11").Formula = "=SUM(D2:D10)" End Sub
FormulaR1C1 Method
The FromulaR1C1 method is more flexible in that it does not restrict you to a set range of cells. The example below will give us the same answer as the one above.
Sub TestSumFormula() Range("D11").FormulaR1C1 = "=SUM(R[-9]C:R[-1]C)" End Sub
However, to make the formula more flexible, we could amend the code to look like this:
Sub TestSumFormula() ActiveCell.FormulaR1C1 = "=SUM(R[-9]C:R[-1]C)" End SubWherever you are in your worksheet, the formula will then add up the 8 cells directly above it and place the answer into your ActiveCell. The Range inside the SUM function has to be referred to using the Row (R) and Column (C) syntax.
Both these methods enable you to use Dynamic Excel formulas within VBA.
There will now be a formula in D11 instead of a value.
Từ khóa » Hàm Sum Trong Vba
-
Hướng Dẫn Cách Viết Hàm SUMIFS Trong VBA - Blog Học Excel Online
-
Sử Dụng SUM () Trong VBA - HelpEx
-
Macro|Bài 26-2| Hàm Trong VBA| SUM,SUMIF,SUMIFS ... - YouTube
-
Hỏi Code VBA Tương đương Hàm Code Và Hàm Sum Trong Excel
-
Cách Sử Dụng Hàm SUMIF Trong VBA | Giải Pháp Excel
-
VBA Exel|Macro|Bài 26-2| Hàm Trong VBA| SUM ... - Tài Chính 4u
-
Sum Function In VBA - Excel - Stack Overflow
-
VBA Exel|Macro|Bài 26-2| Hàm Trong VBA ... - HỖ TRỢ SINH VIÊN
-
Cách Dùng Hàm SUM Trong Excel để Tính Tổng
-
Làm Thế Nào để Viết Ng Thức Hàm Ng Thức Trong VBA Thay Thế Viết Trong
-
VBA - HÀM ĐẾM SỐ Ô MÀU - Tin Học Văn Phòng - Digital Marketing
-
Bài 26-2| Hàm Trong VBA| SUM,SUMIF,SUMIFS ,SUMPRODUCT ...
-
Cách Sử Dụng Hàm SUMIF Trong VBA - Ship Hàng Nhanh
