Các hàm VBA COUNTIF và COUNTIFS

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

wave wave wave wave wave