Подсчет количества ячеек в диапазоне в зависимости от их содержимого методами Count, CountA и CountBlank объекта WorksheetFunction из кода VBA Excel.
Метод WorksheetFunction.Count
Определение
Определение метода Count объекта WorksheetFunction в VBA Excel:
Метод WorksheetFunction.Count подсчитывает в заданном диапазоне (массиве) количество ячеек (элементов массива), содержащих числа, и возвращает значение типа Double.
Синтаксис
Синтаксис метода Count объекта WorksheetFunction:
WorksheetFunction.Count(Arg1, Arg2, ..., Arg30) |
Параметры
Параметры метода Count объекта WorksheetFunction:
Параметр | Описание |
---|---|
Arg1-Arg30 | От 1 до 30 аргументов, которые могут содержать различные типы данных или ссылаться на них. |
Примечания
- Метод WorksheetFunction.Count позволяет получить количество числовых значений в диапазоне ячеек или в массиве.
- При подсчете учитываются аргументы, которые являются числами, датами или текстовым представлением чисел.
- Логические значения учитываются при подсчете только в том случае, если они введены непосредственно в список аргументов.
Метод WorksheetFunction.CountA
Определение
Определение метода CountA объекта WorksheetFunction в VBA Excel:
WorksheetFunction.CountA — это метод, который подсчитывает в заданном диапазоне количество непустых ячеек, и возвращает значение типа Double.
Синтаксис
Синтаксис метода CountA объекта WorksheetFunction:
WorksheetFunction.CountA(Arg1, Arg2, ..., Arg30) |
Параметры
Параметры метода CountA объекта WorksheetFunction:
Параметр | Описание |
---|---|
Arg1-Arg30 | От 1 до 30 аргументов, которые могут содержать различные типы данных или ссылаться на них. |
Примечания
- Метод WorksheetFunction.CountA позволяет получить количество непустых ячеек в заданном диапазоне.
- Непустыми являются ячейки, которые содержат любые данные, включая значения ошибок и пустые строки (
""
). - Тесты показывают, что метод WorksheetFunction.CountA в массиве, созданном путем присвоения ему значений диапазона, содержащего пустые ячейки, все равно считает все элементы массива, как содержащие значения.
Метод WorksheetFunction.CountBlank
Определение
Определение метода CountBlank объекта WorksheetFunction в VBA Excel:
WorksheetFunction.CountBlank — это метод, который подсчитывает в заданном диапазоне количество пустых ячеек, и возвращает значение типа Double.
Синтаксис
Синтаксис метода CountBlank объекта WorksheetFunction:
WorksheetFunction.CountBlank(Arg1) |
Параметры
Параметры метода CountBlank объекта WorksheetFunction:
Параметр | Описание |
---|---|
Arg1 | Диапазон, в котором необходимо подсчитать количество пустых ячеек. |
Примечания
- Метод WorksheetFunction.CountBlank позволяет получить количество пустых ячеек в заданном диапазоне.
- Пустыми являются ячейки, которые не содержат никаких данных.
- Также подсчитываются, как пустые, ячейки с формулами, которые возвращают пустые строки (
""
). - Ячейки с нулевыми значениями в подсчете не участвуют.
Примеры
Таблица для строк кода VBA Excel со ссылками на диапазон "A1:C5"
, а также с массивом его значений в качестве аргументов:
Примеры с WorksheetFunction.Count
Sub Primer1() Dim n As Double, a() As Variant n = WorksheetFunction.Count(Range(«A1:C5»)) MsgBox n ‘Результат: 8 a = Range(«A1:C5») n = WorksheetFunction.Count(a) MsgBox n ‘Результат: 8 n = WorksheetFunction.Count(«раз», «два», «три», 1, 2, 3) MsgBox n ‘Результат: 3 n = WorksheetFunction.Count(«раз», «два», «три», «1», «2», «3», 1, 2, 3) MsgBox n ‘Результат: 6 n = WorksheetFunction.Count(Empty, Empty, 0, 0, «», «») MsgBox n ‘Результат: 4 n = WorksheetFunction.Count(True, False, «True», «False») MsgBox n ‘Результат: 2 End Sub |
Метод WorksheetFunction.Count можно использовать для подсчета количества числовых значений в массиве, если он создан путем присвоения ему значений диапазона. Тогда логические значения ИСТИНА и ЛОЖЬ, если они встречаются в диапазоне, в подсчете количества числовых значений не участвуют.
Примеры с WorksheetFunction.CountA
Sub Primer2() Dim n As Double, a() As Variant n = WorksheetFunction.CountA(Range(«A1:C5»)) MsgBox n ‘Результат: 13 a = Range(«A1:C5») n = WorksheetFunction.CountA(a) MsgBox n ‘Результат: 15 n = WorksheetFunction.CountA(«раз», «два», «три», 1, 2, 3) MsgBox n ‘Результат: 6 n = WorksheetFunction.CountA(Empty, Empty, 0, 0, «», «») MsgBox n ‘Результат: 6 End Sub |
Примеры с WorksheetFunction.CountBlank
Sub Primer3() Dim n As Double, a As Range n = WorksheetFunction.CountBlank(Range(«A1:C5»)) MsgBox n ‘Результат: 2 Set a = Range(«A1:C5») n = WorksheetFunction.CountBlank(a) MsgBox n ‘Результат: 2 End Sub |
Следующая статья по этой теме: VBA Excel. Методы CountIf и CountIfs.
title | keywords | f1_keywords | ms.prod | api_name | ms.assetid | ms.date | ms.localizationpriority |
---|---|---|---|---|---|---|---|
WorksheetFunction.CountA method (Excel) |
vbaxl10.chm137142 |
vbaxl10.chm137142 |
excel |
Excel.WorksheetFunction.CountA |
b3d8662b-a886-daf8-2ce0-763017fbcd94 |
05/22/2019 |
medium |
WorksheetFunction.CountA method (Excel)
Counts the number of cells that are not empty and the values within the list of arguments.
Syntax
expression.CountA (Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8, Arg9, Arg10, Arg11, Arg12, Arg13, Arg14, Arg15, Arg16, Arg17, Arg18, Arg19, Arg20, Arg21, Arg22, Arg23, Arg24, Arg25, Arg26, Arg27, Arg28, Arg29, Arg30)
expression A variable that represents a WorksheetFunction object.
Parameters
Name | Required/Optional | Data type | Description |
---|---|---|---|
Arg1 — Arg30 | Required | Variant | 1 to 30 arguments representing the values that you want to count. |
Return value
Double
Remarks
Use CountA to count the number of cells that contain data in a range or array.
A value is any type of information, including error values and empty text («»). A value does not include empty cells.
If an argument is an array or reference, only values in that array or reference are used. Empty cells and text values in the array or reference are ignored.
If you don’t need to count logical values, text, or error values, use the Count function.
[!includeSupport and feedback]
Excel VBA COUNTA Function
You may have often used the COUNT and COUNTA functions within Microsoft Excel. Wherein COUNT captures all the numerical values in a cell, COUNTA captures all the non-empty cells (including strings). Is by any means possible to use COUNTA function through VBA? Absolutely, YES! You can use the COUNTA function through VBA as a worksheet function (as it is a part of WorksheetFunction family inside VBA) to count the non-empty cells through a given worksheet range. The benefit of COUNTA over COUNT function is – it can count anything (numbers, strings, special characters, Error-values, etc.) except empty cells in a given range whereas, COUNT can only count the number of cells that consist the numeric values.
VBA COUNTA Syntax:
The syntax for VBA COUNTA function is as shown below:
Where,
Arg1 – Specifies the argument for this function which is mandatory and can take any non-empty value such as number, string, error values (like #N/A, #DIV/0!), special characters, etc. rest other arguments are optional.
This function can take a maximum of 30 arguments in a single call. An argument can consist of a range of cells or a single value which is inputted manually.
How to Use COUNTA Function in Excel VBA?
Below are the different examples to use COUNTA Function in Excel using VBA Code.
You can download this VBA COUNTA Excel Template here – VBA COUNTA Excel Template
Example #1 – VBA COUNTA with Manual Arguments as an Input
We will see how COUNTA function works when we provide manual arguments to it in VBA. Follow the below-mentioned steps:
Step 1: Insert a new module in Visual Basic Editor (VBE). Click on Insert tab > select Module.
Step 2: Define a new sub-procedure within the newly inserted module, that can hold your macro.
Code:
Sub Example_1() End Sub
Step 3: Decide where we want to store the output for the COUNTA function. I want to store it in cell A2 of sheet named “Example 1”. In order to do that, we need to use Sheets.Range method in VBA. See the following screenshot for your reference:
Code:
Sub Example_1() Sheets("Example 1").Range("A2") End Sub
This piece of code selects the cell A2 as a range from the sheet named Example 1.
Step 4: Use an assignment operator so that we can assign the value to the cell that is going to be accessed through the code above. Add the object named WorksheetFunction so that we can access COUNTA function under it.
Code:
Sub Example_1() Sheets("Example 1").Range("A2") = WorksheetFunction End Sub
Step 5: Put a dot (.) after object specified and you will see a list of functions available to use under it. Select COUNTA from the list of multiple available functions which allows you to count the non-empty cells or values.
Step 6: Specify the arguments manually under the COUNTA function. Arguments are: “Rajnish”, “#N/A”, 1, “*”, True. We have tried to bring all the data types as an argument to this function.
Code:
Sub Example_1() Sheets("Example 1").Range("A2") = WorksheetFunction.CountA("Rajnish", "#N/A", 1, "*", True) End Sub
Step 7: Run this piece of code by hitting F5 or Run button and see the output under cell A2 of sheet “Example 1” in the active workbook.
In this code, we want the system to count the input arguments and store the count under cell A2 of sheet Example 1.
Example #2 – VBA COUNTA to Count Non-Empty Cells in a Given Range
Suppose I have data all across column A and I need to count what are the non-empty rows in the entire column. As the entire column consists of more than 10 Lac’s rows, it is an ideal time-consuming for me to navigate towards and count each non-empty cell. See the partial screenshot of the data below.
Follow the below steps:
Step 1: Define a new sub-procedure which can hold your macro.
Code:
Sub Example_2() End Sub
Step 2: Define two new variables under this sub-procedure as a Range using Dim. One variable will be helpful to hold the range of input argument column and other variables will be helpful in holding the cell where we want the output as a counted number.
Code:
Sub Example_2() Dim rng_1 As Range Dim op_cell As Range End Sub
Here, rng_1 will store the input range for COUNTA function. The output of COUNTA will be stored under op_cell variable.
Step 3: Now, set the range for both of the variables using VBA Set property. This is to be done because we can’t directly assign a value to a variable defined as a range object.
Code:
Sub Example_2() Dim rng_1 As Range Dim op_cell As Range Set rng_1 = Range("A:A") Set op_cell = Range("B1") End Sub
Here, rng_1 variable has been set to the range of entire column named A. op_cell is set to cell B1 as it would be the cell that contains the output of the COUNTA.
Step 4: Now, use general assignment operator against op_cell variable, so that we can store the output under the cell which is set to that variable. This can be considered as an output initialization.
Code:
Sub Example_2() Dim rng_1 As Range Dim op_cell As Range Set rng_1 = Range("A:A") Set op_cell = Range("B1") op_cell = End Sub
Step 5: Use WorksheetFunction object on the right-hand side of assignment operator (it would be an expression that will get evaluated and value will be stored under cell set to variable op_cell) to initialize the class within which we can access as well as use COUNTA function.
Code:
Sub Example_2() Dim rng_1 As Range Dim op_cell As Range Set rng_1 = Range("A:A") Set op_cell = Range("B1") op_cell = WorksheetFunction End Sub
Step 6: As soon as you hit dot (.) after WorksheetFunction object, you can access all the functions available under that class. Navigate towards the COUNTA function and double click it to select.
Step 7: Use rng_1 variable as an input argument under COUNTA. Therefore, this function under worksheet function object class can count the non-empty cells present within the entire column A.
Code:
Sub Example_2() Dim rng_1 As Range Dim op_cell As Range Set rng_1 = Range("A:A") Set op_cell = Range("B1") op_cell = WorksheetFunction.CountA(rng_1) End Sub
Step 8: Run this code by hitting the F5 or Run button and you can see the output as shown below in cell B1 of an active sheet from the workbook.
In cell B1 we can see a number as 17. Which means that, we have 17 non-empty cells present in column A of the worksheet. You may not be seeing at all the 17 through this screenshot as it is a partial one. You better could see the worksheet and navigate through column A.
Things to Remember
- You can use VBA COUNTA function when you have to count the number of non-empty cells present in the given range.
- COUNTA considers all the values like numbers, strings, error values, Booleans, empty text (“”). However, it does not consider the cell which is empty.
- The empty cells will not be counted using the COUNTA function and will be ignored.
- You can use arguments manually in the VBA COUNTA function and it still works.
Recommended Articles
This is a guide to VBA COUNTA Function. Here we discuss how to use COUNTA Function in Excel VBA along with practical examples and downloadable excel template. You can also go through our other suggested articles –
- VBA Collection
- FileCopy in VBA
- Count Cells with Text in Excel
- VBA Get Cell Value
COUNTA Worksheet Function in Excel VBA
In our earlier article “Excel COUNTAThe COUNTA function is an inbuilt statistical excel function that counts the number of non-blank cells (not empty) in a cell range or the cell reference. For example, cells A1 and A3 contain values but, cell A2 is empty. The formula “=COUNTA(A1,A2,A3)” returns 2.
read more,” we have seen how to use the COUNT function to count the numerical values from the range of values. How about calculating all the costs in the field of cells? Yes, we can estimate that as well. To count all the cell values in the range of cells, we need to use the formula “COUNTA” in Excel VBA. This article will show you how to use the COUNTA function in VBA to count all the cell values in the supplied range.
Table of contents
- COUNTA Worksheet Function in Excel VBA
- Examples of COUNTA Function in VBA
- Coding with Variables
- Recommended Articles
You are free to use this image on your website, templates, etc, Please provide us with an attribution linkArticle Link to be Hyperlinked
For eg:
Source: VBA COUNTA (wallstreetmojo.com)
Examples of COUNTA Function in VBA
One truth is that the COUNTA function is not a VBA functionVBA functions serve the primary purpose to carry out specific calculations and to return a value. Therefore, in VBA, we use syntax to specify the parameters and data type while defining the function. Such functions are called user-defined functions.read more. So your question is if it is not a VBA function, how do we use it? Nothing worries, even though it is not a VBA function; still, we can use it under the worksheet function class in VBA coding.
You can download this VBA COUNTA Excel Template here – VBA COUNTA Excel Template
Let us write the code to apply the Excel VBA COUNTA.
Step 1: Create a subprocedure name.
Step 2: Now, decide where we will store the result of the VBA COUNTA function. In this example, I want to keep the work in cell C2. So my code will be Range(“C2”).Value.
Code:
Sub Counta_Example1() Range("C2").Value = End Sub
Step 3: In cell C2, we need the value of the VBA COUNTA function. So, to apply the Excel VBA COUNTA function, let’s first use the worksheet function class.
Code:
Sub Counta_Example1() Range("C2").Value = Work End Sub
Step 4: After applying the worksheet function class, select the formula COUNTA by putting a dot.
Code:
Sub Counta_Example1() Range("C2").Value = WorksheetFunction.Count End Sub
Step 5: We need to supply the range of cells for counting. In this example, we need to calculate the range of cells from A1 to A11. Then, to provide the cells using the VBA RANGE objectRange is a property in VBA that helps specify a particular cell, a range of cells, a row, a column, or a three-dimensional range. In the context of the Excel worksheet, the VBA range object includes a single cell or multiple cells spread across various rows and columns.read more.
Code:
Sub Counta_Example1() Range("C2").Value = WorksheetFunction.CountA(Range("A1:A11")) End Sub
Let us run the code to get the result in cell C2.
So, the VBA COUNTA returns the same result as well.
Like this, we can use COUNTA to count the non-empty or non-blank cells from the supplied range.
Coding with Variables
VBA variables are the key to building a project. Now, we can declare VBA variablesVariable declaration is necessary in VBA to define a variable for a specific data type so that it can hold values; any variable that is not defined in VBA cannot hold values.read more and arrive at the result for the same data.
For example, look at the below code.
Code:
Sub Counta_Example2() Dim CountaRange As Range Dim CountaResultCell As Range Set CountaRange = Range("A1:A11") Set CountaResultCell = Range("C2") CountaResultCell = WorksheetFunction.CountA(CountaRange) End Sub
Let us explain the above code now.
First, we have declared the variable “CountaRange” as a range to reference the range of values.
Dim CountaRange As Range
Next, we have set the reference as range A1 to A11.
Set CountaRange = Range("A1:A11")
The second variable is to reference the COUNTA result cell.
Dim CountaResultCell As Range
For this variable, we have set the cell as C2.
Set CountaResultCell = Range("C2")
As usual, we have applied the COUNTA function using variables instead of hardcoded ranges. Now, look at the old code and this VBA codeVBA code refers to a set of instructions written by the user in the Visual Basic Applications programming language on a Visual Basic Editor (VBE) to perform a specific task.read more.
Code 1:
Code 2:
In code 1, we have Range C2. In Code 2, we have the variable name “CountaResultCell.” Here the variable “CountaResultCell” set reference as a C2 cell. So this variable is a C2 cell now.
In code 1, the COUNTA function range is A1 to A11. In regulation 2, it is a variable called “CountaRange.” This variable holds a reference to the range A1 to A11.
That is the difference between old code and code with variables.
So, the COUNTA function helps us count all the non-empty cells from the supplied range irrespective of the data.
Recommended Articles
This article has been a guide to VBA COUNTA. Here, we learn how to use the COUNTA worksheet function in Excel VBA and examples and download an Excel template. Below are some useful Excel articles related to VBA: –
- Exit Subprocedure in Excel VBA
- Declare One Dimensional Array in VBA
- Val Functions in VBA
- COUNTIF Function in VBA