Giả sử ta có bài toán đơn giản như sau:
-> Đếm số ô trống trong 1 vùng dữ liệu bất kỳ.
Trong bài toán này, vùng dữ liệu bất kỳ là B4:E9, trong vùng dữ liệu có ô D7 chứa giá trị là dấu nháy đơn (không phải trống). Khi đó kết quả trả về phải là 11.
Để tạo ra một hàm tính tổng điểm theo những điều kiện trên, các bạn làm theo các bước sau:
Bước 1: Các bạn vào môi trường lập trình của Excel (phím tắt ALT+F11), tạo một module và copy code dưới đây vào trong module đó:
Option Explicit
Function DemOTrong(rng As Range) As Long
Dim i As Long ' Dem so ô cua vung
Dim j As Long ' Dem so o có du lieu trong vung
' Dem so ô cua vung
i = rng.Cells.Count
' Dem so o có du lieu trong vung
j = WorksheetFunction.CountA(rng)
'Tong so o trông
DemOTrong = i - j
End Function
Bước 2: Tại ô B2, chúng ta sẽ dùng hàm COUNTBLANK để đếm những ô có giá trị trống (hàm Excel thuần túy) B2=COUNTBLANK(B4:E9).
Bước 3: Tiếp tục dùng hàm DemOTrong mà chúng ta đã viết để so sánh kết quả, B3=DemOTrong(B4:E9). Các bạn chú ý kỹ kết quả của 2 hàm là COUNTBLANK và DemOTrong mà chúng ta tự viết, có 2 kết quả khác nhau. Nguyên nhân là mình đã giải thích ở đầu bài viết, nhưng ở đây mình xin được giải thích lại như sau: Hàm COUNTBLANK
sẽ đếm tất cả giá trị kể cả giá trị nháy đơn trong ô, mà khi dùng hàm ISBLANK để kiểm tra ô có giá trị nháy đơn vẫn trả về là FALSE (không phải ô trống, các bạn có thể kiểm tra thực tế trên 1 file excl bất kỳ). Còn hàm DemOTrong chỉ đếm những giá trị là trống, không đếm những ô có dấu nháy đơn.
Các bạn vào đây download file ví dụ: Download
Để tìm hiểu thêm nhiều kiến thức về VBA cơ bản, các bạn tham khảo thêm tại khóa đào tạo VBA cơ bản của công ty. Link khóa học.