Excel provides many ways to count cells in a range that meet various criteria:
- The DCOUNT function. The data must be set up in a table, and a separate criterion range is required.
- The COUNT function. Simply counts the number of cells in a range that contain a number.
- The COUNTA function. Counts the number of non-empty cells in a range.
- The COUNTBLANK function. Counts the number of empty cells in a range.
- The COUNTIF function. Very flexible, but often not quite flexible enough.
- An array formula. Useful when the other techniques won’t work.
Formula Examples
Listed below are some formula examples that demonstrate various counting techniques. These formula all use a range named data.
To count the number of cells that contain a negative number:
=COUNTIF(data,"<0")
To count the number of cells that contain the word “yes” (not case sensitive):
=COUNTIF(data,"yes")
To count the number of cells that contain any text:
=COUNTIF(data,"*")
To count the number of cells that contain text that begins with the letter “s” (not case-sensitive):
=COUNTIF(data,"s*")
To count the number of cells that contain the letter “s” (not case-sensitive):
=COUNTIF(data,"*s*")
To count the number of cells that contain either “yes” or “no” (not case-sensitive):
=COUNTIF(data,"yes")+COUNTIF(data,"no")
To count the number of three-letter words:
=COUNTIF(data,"???")
To count the number of cells that contain a value between 1 and 10:
=COUNTIF(data,">=1")-COUNTIF(data,">10")
To count the number of unique numeric values (ignores text entries):
=SUM(IF(FREQUENCY(data,data)>0,1,0))
To count the number of cells that contain an error value (this is an array formula, entered with Ctrl+Shift+Enter):
=SUM(IF(ISERR(data),1,0))
Using the formulas in VBA
You can also use these techniques in your VBA code. For example the VBA statement below calculates the number of three-letter words in a range named data, and assigns the value to the NumWords variable:
NumWords = Application.COUNTIF(Sheets("Sheet1").Range("data"), "???")
The other formula examples listed above can also be converted to VBA.