Hướng dẫn này sẽ chỉ cho bạn cách sử dụng hàm COUNTIF và COUNTIFS trong VBA
VBA không có hàm COUNTIF hoặc COUNTIFS tương đương mà bạn có thể sử dụng - người dùng phải sử dụng các hàm Excel tích hợp sẵn trong VBA bằng cách sử dụng WorkSheetFunction sự vật.
COUNTIF WorksheetFunction
Đối tượng WorksheetFunction có thể được sử dụng để gọi hầu hết các hàm Excel có sẵn trong hộp thoại Chèn Hàm trong Excel. Hàm COUNTIF là một trong số chúng.
123 | Sub TestCountIf ()Range ("D10") = Application.WorksheetFunction.CountIf (Range ("D2: D9"), "> 5")Kết thúc Sub |
Quy trình trên sẽ chỉ đếm các ô trong Dải ô (D2: D9) nếu chúng có giá trị từ 5 trở lên. Lưu ý rằng vì bạn đang sử dụng dấu lớn hơn, tiêu chí lớn hơn 5 cần phải nằm trong dấu ngoặc đơn.
Gán kết quả COUNTIF cho một biến
Bạn có thể muốn sử dụng kết quả của công thức của mình ở nơi khác trong mã thay vì viết nó trực tiếp trở lại và Dãy Excel. Nếu đúng như vậy, bạn có thể gán kết quả cho một biến để sử dụng sau này trong mã của mình.
1234567 | Sub AssignSumIfVariable ()Làm mờ kết quả dưới dạng Double'Gán biếnresult = Application.WorksheetFunction.CountIf (Phạm vi ("D2: D9"), "> 5")'Hiển thị kết quảMsgBox "Số lượng ô có giá trị lớn hơn 5 là" & kết quảKết thúc Sub |
Sử dụng COUNTIFS
Hàm COUNTIFS tương tự như COUNTIF WorksheetFunction nhưng nó cho phép bạn kiểm tra nhiều tiêu chí. Trong ví dụ bên dưới, công thức sẽ đếm số ô từ D2 đến D9 trong đó Giá bán lớn hơn 6 VÀ Giá chi phí lớn hơn 5.
123 | Sub usingCountIfs ()Phạm vi ("D10") = WorksheetFunction.CountIfs (Phạm vi ("C2: C9"), "> 6", Phạm vi ("E2: E9"), "> 5")Kết thúc Sub |
Sử dụng COUNTIF với một đối tượng phạm vi
Bạn có thể gán một nhóm ô cho đối tượng Phạm vi, sau đó sử dụng đối tượng Phạm vi đó với WorksheetFunction sự vật.
123456789 | Sub TestCountIFRange ()Dim rngCount as Range'gán phạm vi ôĐặt rngCount = Range ("D2: D9")'sử dụng phạm vi trong công thứcRange ("D10") = WorksheetFunction.SUMIF (rngCount, "> 5")'giải phóng các đối tượng phạm viĐặt rngCount = Không có gìKết thúc Sub |
Sử dụng COUNTIFS trên nhiều đối tượng phạm vi
Tương tự, bạn có thể sử dụng COUNTIFS trên nhiều Đối tượng Phạm vi.
123456789101112 | Sub TestCountMultipleRanges ()Dim rngCriteria1 As RangeDim rngCriteria2 dưới dạng Phạm vi'gán phạm vi ôĐặt rngCriteria1 = Range ("D2: D9")Đặt rngCriteria2 = Range ("E2: E10")'sử dụng các phạm vi trong công thứcPhạm vi ("D10") = WorksheetFunction.CountIfs (rngCriteria1, "> 6", rngCriteria2, "> 5")'giải phóng các đối tượng phạm viĐặt rngCriteria1 = Không có gìĐặt rngCriteria2 = Không có gìKết thúc Sub |
Công thức COUNTIF
Khi bạn sử dụng WorksheetFunction.COUNTIF để thêm tổng vào một phạm vi trong trang tính của bạn, một giá trị tĩnh được trả về, không phải là một công thức linh hoạt. Điều này có nghĩa là khi số liệu của bạn trong Excel thay đổi, giá trị được trả về bởi WorksheetFunction sẽ không thay đổi.
Trong ví dụ trên, quy trình đã đếm số lượng ô có giá trị trong Phạm vi (D2: D9) có Giá ưu đãi lớn hơn 6 và kết quả được đưa vào D10. Như bạn có thể thấy trong thanh công thức, kết quả này là một hình chứ không phải công thức.
Nếu bất kỳ giá trị nào thay đổi trong Phạm vi (D2: D9), kết quả trong D10 sẽ KHÔNG PHẢI thay đổi.
Thay vì sử dụng WorksheetFunction.SumIf, bạn có thể sử dụng VBA để áp dụng Hàm SUMIF cho một ô bằng cách sử dụng Công thức hoặc Công thứcR1C1 các phương pháp.
Phương pháp công thức
Phương thức công thức cho phép bạn trỏ cụ thể đến một phạm vi ô, ví dụ: D2: D9 như được hiển thị bên dưới.
123 | Sub TestCountIf ()Phạm vi ("D10"). Công thứcR1C1 = "= COUNTIF (D2: D9," "> 5" ")"Kết thúc Sub |
Phương pháp FormulaR1C1
Phương thức FormulaR1C1 linh hoạt hơn ở chỗ nó không hạn chế bạn trong một phạm vi ô đã đặt. Ví dụ dưới đây sẽ cho chúng ta câu trả lời tương tự như ở trên.
123 | Sub TestCountIf ()Phạm vi ("D10"). Công thứcR1C1 = "= COUNTIF (R [-8] C: R [-1] C," "> 5" ")"Kết thúc Sub |
Tuy nhiên, để làm cho công thức linh hoạt hơn nữa, chúng tôi có thể sửa đổi mã để trông giống như sau:
123 | Sub TestCountIf ()ActiveCell.FormulaR1C1 = "= COUNTIF (R [-8] C: R [-1] C," "> 5" ")"Kết thúc Sub |
Dù bạn đang ở đâu trong trang tính của mình, công thức sau đó sẽ đếm các ô đáp ứng tiêu chí ngay phía trên nó và đặt câu trả lời vào ActiveCell của bạn. Phạm vi bên trong hàm COUNTIF phải được tham chiếu bằng cú pháp Hàng (R) và Cột (C).
Cả hai phương pháp này đều cho phép bạn sử dụng các công thức Excel động trong VBA.
Bây giờ sẽ có một công thức trong D10 thay vì một giá trị.
Văn bản liên kết của bạn