Hướng dẫn cách viết hàm SUMIFS trong VBA

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é.

Cách gán hàm SUMIFS từ VBA vào 1 ô trong Excel

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.

  • Vùng tính tổng: C2:C7 là cột số lượng
  • Vùng điều kiện 1: A2:A7 là cột Mã hàng
  • Điều kiện 1: C10 là mã hàng tại ô C10
  • Vùng điều kiện 2: B2:B7 là cột Người bán
  • Điều kiện 2: C11 là tên người bán tại ô C11

=> 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)

Cách viết hàm SUMIFS trong WorksheetFunction của VBA

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:

  • Vùng tính tổng: C2:C7 là cột số lượng => Range(“C2:C7”)
  • Vùng điều kiện 1: A2:A7 là cột Mã hàng => Range(“A2:A7”)
  • Điều kiện 1: C10 là mã hàng tại ô C10 => Range(“C10”)
  • Vùng điều kiện 2: B2:B7 là cột Người bán => Range(“B2:B7”)
  • Điều kiện 2: C11 là tên người bán tại ô C11 => Range(“C11”)

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


Tác giả: duongquan211287

· · ·

Khóa học mới xuất bản