ĐẾM VBA

Hướng dẫn này sẽ chỉ cho bạn cách sử dụng hàm COUNT Excel trong VBA

Hàm VBA COUNT được sử dụng để đếm số ô trong Trang tính của bạn có các giá trị trong đó. Nó được truy cập bằng phương thức WorksheetFunction trong VBA.

COUNT 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 COUNT là một trong số chúng.

123 Sub TestCountFunctinoRange ("D33") = Application.WorksheetFunction.Count (Phạm vi ("D1: D32"))Kết thúc Sub

Bạn có thể có tối đa 30 đối số trong hàm COUNT. Mỗi đối số phải tham chiếu đến một dải ô.

Ví dụ dưới đây sẽ đếm có bao nhiêu ô được điền với các giá trị trong các ô từ D1 đến D9

123 Sub TestCount ()Phạm vi ("D10") = Application.WorksheetFunction.Count (Phạm vi ("D1: D9"))Kết thúc Sub

Ví dụ dưới đây sẽ đếm có bao nhiêu giá trị trong một phạm vi ở cột D và trong một phạm vi ở cột F. Nếu bạn không nhập đối tượng Ứng dụng, nó sẽ được giả định.

123 Sub TestCountMultiple ()Phạm vi ("G8") = WorksheetFunction.Count (Phạm vi ("G2: G7"), Phạm vi ("H2: H7"))Kết thúc Sub

Gán kết quả Đếm 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 AssignCount ()Làm mờ kết quả dưới dạng số nguyên'Gán biếnresult = WorksheetFunction.Count (Phạm vi ("H2: H11"))'Hiển thị kết quảMsgBox "Số ô được điền giá trị là" & kết quảKết thúc Sub

COUNT 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 TestCountRange ()Dim rng As Range'gán phạm vi ôĐặt rng = Range ("G2: G7")'sử dụng phạm vi trong công thứcRange ("G8") = WorksheetFunction.Count (rng)'giải phóng đối tượng phạm viĐặt rng = Không có gìKết thúc Sub

COUNT Đối tượng Nhiều Phạm vi

Tương tự, bạn có thể đếm có bao nhiêu ô được điền các giá trị trong nhiều Đối tượng Phạm vi.

123456789101112 Sub TestCountMultipleRanges ()Dim rngA As RangeDim rngB dưới dạng Phạm vi'gán phạm vi ôĐặt rngA = Range ("D2: D10")Đặt rngB = Range ("E2: E10")'sử dụng phạm vi trong công thứcRange ("E11") = WorksheetFunction.Count (rngA, rngB)'giải phóng đối tượng phạm viĐặt rngA = Không có gìĐặt rngB = Không có gìKết thúc Sub

Sử dụng COUNTA

Số đếm sẽ chỉ đếm GIÁ TRỊ trong các ô, nó sẽ không đếm ô nếu ô có văn bản trong đó. Để đếm các ô được điền bằng bất kỳ loại dữ liệu nào, chúng ta cần sử dụng hàm COUNTA.

123 Sub TestCountA ()Phạm vi ("B8) = Application.WorksheetFunction.CountA (Phạm vi (" B1: B6 "))Kết thúc Sub

Trong ví dụ bên dưới, hàm COUNT sẽ trả về số 0 vì không có giá trị nào trong cột B, trong khi nó sẽ trả về số 4 cho cột C. Tuy nhiên, hàm COUNTA sẽ đếm các ô có Văn bản trong đó và sẽ trả về giá trị là 5 trong cột B trong khi vẫn trả về giá trị 4 trong cột C.

Sử dụng COUNTBLANKS

Hàm COUNTBLANKS sẽ chỉ đếm các Ô trống trong Phạm vi ô - tức là các ô không có dữ liệu nào trong đó.

123 Sub TestCountBlank ()Range ("B8) = Application.WorksheetFunction.CountBlanks (Phạm vi (" B1: B6 "))Kết thúc Sub

Trong ví dụ dưới đây, cột B không có ô trống trong khi cột C có một ô trống.

Sử dụng hàm COUNTIF

Một hàm trang tính khác có thể được sử dụng là hàm COUNTIF.

123456 Sub TestCountIf ()Range ("H14") = WorksheetFunction.CountIf (Range ("H2: H10"), "> 0")Phạm vi ("H15") = WorksheetFunction.CountIf (Phạm vi ("H2: H10"), "> 100")Phạm vi ("H16") = WorksheetFunction.CountIf (Phạm vi ("H2: H10"), "> 1000")Range ("H17") = WorksheetFunction.CountIf (Range ("H2: H10"), "> 10000")Kết thúc Sub

Quy trình trên sẽ chỉ đếm các ô có giá trị trong đó nếu tiêu chí phù hợp - lớn hơn 0, lớn hơn 100, lớn hơn 1000 và lớn hơn 10000. Bạn phải đặt tiêu chí trong dấu ngoặc kép để công thức hoạt động chính xác.

Nhược điểm của WorksheetFunction

Khi bạn sử dụng WorksheetFunction để đếm các giá trị trong 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, thủ tục TestCount đã đếm các ô trong cột H nơi có giá trị. 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.

Do đó, nếu bất kỳ giá trị nào thay đổi trong Dải (H2: H12), thì kết quả trong H14 sẽ KHÔNG PHẢI thay đổi.

Thay vì sử dụng WorksheetFunction.Count, bạn có thể sử dụng VBA để áp dụng Hàm Đếm 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.

Sử dụng 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ụ: H2: H12 như hình dưới đây.

123 Sub TestCountFormulaDãy ("H14"). Công thức = "= Đếm (H2: H12)"Kết thúc Sub

Sử dụng phương pháp FormulaR1C1

Phương thức FromulaR1C1 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 TestCountFormula ()Phạm vi ("H14"). Công thức = "= Đếm (R [-9] C: R [-1] C)"Kết thúc Sub

Tuy nhiên, để làm cho công thức linh hoạt hơn, chúng tôi có thể sửa đổi mã thành như sau:

123 Sub TestCountFormula ()ActiveCell.FormulaR1C1 = "= Đếm (R [-11] C: R [-1] C)"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 giá trị trong 12 ô 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 COUNT phải được tham chiếu bằng cách sử dụ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 H14 thay vì một giá trị.

Bạn sẽ giúp sự phát triển của trang web, chia sẻ trang web với bạn bè

wave wave wave wave wave