Hàm SUMIFS là một hàm mạnh mẽ trong Excel, cho phép tính tổng dựa trên nhiều điều kiện. Trong bài viết này, Thủ Thuật sẽ hướng dẫn bạn cách sử dụng hàm SUMIFS trong VBA, mở ra những khả năng xử lý dữ liệu tự động vượt trội.
Sử dụng SUMIFS trực tiếp trong VBA
Bạn đã quen thuộc với cách dùng hàm SUMIFS trong Excel. Vậy trong VBA thì sao? Giả sử chúng ta có yêu cầu sau:
Yêu cầu tính toán bằng SUMIFS
Để đáp ứng yêu cầu này, ta cần sử dụng hàm SUMIFS tại ô C12. Cách đơn giản nhất là gán công thức trực tiếp vào ô C12 bằng VBA:
Sheets("Sheet1").Range("C12").Formula = "=SUMIFS(C2:C7,A2:A7,C10,B2:B7,C11)"
Đoạn code này gán công thức =SUMIFS(C2:C7,A2:A7,C10,B2:B7,C11)
vào ô C12 của Sheet1. Công thức này hoạt động tương tự như khi bạn nhập trực tiếp vào Excel.
Minh họa VBA
Cụ thể:
- C2:C7: Vùng tính tổng (cột Số lượng).
- A2:A7: Vùng điều kiện 1 (cột Mã hàng).
- C10: Điều kiện 1 (Mã hàng tại ô C10).
- B2:B7: Vùng điều kiện 2 (cột Người bán).
- C11: Điều kiện 2 (Tên người bán tại ô C11).
Gán công thức vào ô
Kết quả là ô C12 sẽ chứa công thức SUMIFS và hiển thị giá trị tương ứng.
Tối ưu hóa với WorksheetFunction
Cách gán công thức trực tiếp tạo ra công thức động, có thể làm chậm hiệu suất của file Excel. Để tối ưu, ta có thể tính toán trước trong VBA rồi gán kết quả vào ô. Sử dụng WorksheetFunction
trong VBA để viết hàm SUMIFS:
Viết hàm trong WorksheetFunction
Cách viết hàm trong WorksheetFunction
khác với cách viết trong Excel. Ta sử dụng Range
để chỉ định vùng dữ liệu:
Range("C2:C7")
: Vùng tính tổng.Range("A2:A7")
: Vùng điều kiện 1.Range("C10")
: Điều kiện 1.Range("B2:B7")
: Vùng điều kiện 2.Range("C11")
: Điều kiện 2.
Sheets("Sheet1").Range("C12").Value = WorksheetFunction.SumIfs(Range("C2:C7"), Range("A2:A7"), Range("C10"), Range("B2:B7"), Range("C11"))
Viết hàm SUMIFS trong WorksheetFunction
Khi chạy code này, ô C12 sẽ hiển thị giá trị 15.
Kết luận
Bài viết đã hướng dẫn chi tiết cách sử dụng hàm SUMIFS trong VBA, cả bằng cách gán công thức trực tiếp và sử dụng WorksheetFunction
. Phương pháp WorksheetFunction
giúp tối ưu hiệu suất, đặc biệt hữu ích với file dữ liệu lớn. Tùy vào nhu cầu cụ thể, bạn có thể lựa chọn phương pháp phù hợp. Hãy khám phá thêm các bài viết về VBA Excel khác trên Thủ Thuật để nâng cao kỹ năng xử lý dữ liệu của bạn.
Discussion about this post