Bob có nhu cầu sử dụng hàm SUM trong macro để tìm tổng của tất cả các giá trị trong một cột. Vấn đề là số ô được tính tổng sẽ khác nhau; đối với một lần chạy macro, nó có thể là 100 ô, trong khi ở lần tiếp theo có thể là 300 và chỉ ở lần thứ ba 25.

Đầu tiên, có thể dễ dàng sử dụng hầu hết các hàm trang tính (chẳng hạn như SUM) từ bên trong macro. Tất cả những gì bạn cần làm là mở đầu tên hàm bằng “Application.WorksheetFunction.” hoặc đơn giản là “WorksheetFunction”. Do đó, nếu bạn biết rằng mỗi lần chạy macro sẽ yêu cầu tính tổng A1: A100, sau đó là A1: A300 và cuối cùng là A1: A25, bạn có thể sử dụng một macro như sau:

Public Sub Sum_Demo()

Dim myRange     Dim Results     Dim Run As Long

For Run = 1 To 3         Select Case Run         Case 1             myRange = Worksheets("Sheet1").Range("A1", "A100")

Case 2             myRange = Worksheets("Sheet1").Range("A1", "A300")

Case 3             myRange = Worksheets("Sheet1").Range("A1", "A25")

End Select         Results = WorksheetFunction.Sum(myRange)

Range("B" & Run) = Results     Next Run End Sub

Macro này sử dụng For. . . Vòng lặp tiếp theo để chỉ định các phạm vi ô khác nhau được tính tổng. Sau đó, nó sử dụng hàm trang tính SUM để gán tổng cho biến Kết quả, biến này (cuối cùng) được nhồi vào một ô trong cột B. Kết quả của lần chạy đầu tiên được đưa vào B1, lần thứ hai ở B2 và lần thứ ba ở B3 .

Mặc dù macro cụ thể này có thể không hữu ích nhưng nó cho thấy một số kỹ thuật hữu ích, chẳng hạn như cách xác định phạm vi đã đặt tên, cách sử dụng hàm SUM và cách nhồi tổng vào một ô. Những gì macro không làm là hiển thị cách chọn một số ô thay đổi được tính tổng. Để làm điều này, tốt nhất là dựa vào phương thức End của đối tượng Range. Dòng mã sau đây cho thấy cách bạn có thể nhồi tổng của dải ô bắt đầu từ A1 và kéo dài đến ngay trước ô trống đầu tiên trong cột:

myRange = ActiveSheet.Range("A1", Range("A1").End(xlDown))

Range("B1") = WorksheetFunction.Sum(myRange)

Lưu ý rằng một phạm vi (myRange) được định nghĩa là bắt đầu bằng A1 và kéo dài qua bất kỳ giá trị nào mà phương thức End trả về. Điều này sau đó được tổng hợp và nhồi vào B1.

_Lưu ý: _

Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên trang ExcelTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.

ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.

Mẹo này (3217) áp dụng cho Microsoft Excel 97, 2000, 2002 và 2003. Bạn có thể tìm phiên bản của mẹo này cho giao diện ribbon của Excel (Excel 2007 trở lên) tại đây: