Hàm SUMIFS là một trong những hàm khá thông dụng trong Excel. Hàm có chức năng tính tổng theo nhiều điều kiện. Trong bài viết này, chúng ta cùng tìm hiểu cách viết hàm SUMIFS trong VBA xem có điều gì đặc biệt không nhé.
Xem nhanh
Trong các bài viết trước các bạn đã biết đến cách dùng hàm sumif trong excel rồi. Còn đối với VBA thì sao, ví dụ chúng ta có yêu cầu sau:
Để thực hiện yêu cầu này, chúng ta cần sử dụng hàm SUMIFS tại ô C12.
Cách làm đơn giản là bạn có thể viết code VBA để gán công thức vào trong ô C12 như sau:
Sheets(“Sheet1”).Range(“C12”).Formula = “=SUMIFS(C2:C7,A2:A7,C10,B2:B7,C11)”
Code trên có nghĩa là: Gán vào ô C12 trong Sheet1 (là Sheet có yêu cầu tính toán) công thức có nội dung là: =SUMIFS(C2:C7,A2:A7,C10,B2:B7,C11)
Có thể thấy công thức SUMIFS được viết hoàn toàn bình thường, giống như cách chúng ta vẫn viết trực tiếp trong Excel.
=> Kết quả của cách làm này là tại ô C12 có công thức SUMIFS (là ô chứa công thức)
Nhược điểm của cách gán công thức bằng thuộc tính Formula là trong ô chứa công thức động. Điều này kiến file Excel mất thời gian tính toán nhiều hơn.
Để hạn chế công thức động, bạn có thể tính toán trực tiếp trong VBA trước, sau đó mới gán kết quả vào trong ô. Cách làm như sau:
Sử dụng đối tượng WorksheetFunction trong VBA để viết hàm SUMIFS:
Tuy nhiên cách viết hàm trong WorksheetFunction không giống cách viết thông thường như Excel, mà chúng ta viết như sau:
Khi chạy code trên, ta có kết quả là giá trị 15 tại ô C12.
Các bạn có thể tải file mẫu của bài viết tại địa chỉ: http://bit.ly/2WuL82K
Ngoài ra bạn có thể tham khảo thêm một số bài viết thú vị khác về VBA Excel:
Hướng dẫn cách viết code VBA để tự động sắp xếp bảng tính Excel
Hướng dẫn cách lấy dữ liệu không trùng từ nhiều Sheet vào 1 Sheet
Hướng dẫn cách viết code tự động ghi nhận thời gian nhập dữ liệu bằng VBA