Explanation
In this example, the goal is to count the number of cells in a range that contain formulas. This problem can be solved with a formula based on the SUMPRODUCT and ISFORMULA functions, as explained below.
Forecast values
The values in the range C13:C16 are forecasts created with a formula based on the MROUND function. The formula in C13, copied down, is:
=MROUND(C12*1.05,25)
This formula generates values that are 5% higher than the previous month, rounded to the nearest multiple of 25.
ISFORMULA function
The ISFORMULA function returns TRUE if a cell contains a formula, and FALSE if not. For example, if cell A1 contains the =1+1 the following formula will return TRUE:
=ISFORMULA(A1) // returns TRUE
if cell A1 contains the number 2 (hard coded), ISFORMULA will return FALSE:
=ISFORMULA(A1) // returns FALSE
Count cells with formulas
In the worksheet shown, the range C5:C16 is named "data". To count cells in this range that contain formulas, the formula in cell F6 is:
=SUMPRODUCT(--ISFORMULA(data))
Working from the inside out, the ISFORMULA function checks all cells in data with this formula:
ISFORMULA(data)
Because there are 12 cells in the range, ISFORMULA returns 12 results in an array like this:
{FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;TRUE;TRUE;TRUE}
The FALSE values in this array represent cells that do not contain a formula. Each TRUE value represents a cell that does contain a formula. Notice the last 4 values are TRUE, which makes sense because these cells are forecast values created with a formula. The next step is to convert the TRUE and FALSE values to 1s and 0s. We do this with a double negative (--) operation:
--{FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;TRUE;TRUE;TRUE}
The result is a numeric array that contains only 1s and 0s:
{0;0;0;0;0;0;0;0;1;1;1;1}
This array is delivered directly to the SUMPRODUCT function:
=SUMPRODUCT({0;0;0;0;0;0;0;0;1;1;1;1}) // returns 4
With only one array to process, SUMPRODUCT simply sums the array and returns a final result of 4.
Not formulas
To count cells in data that do not contain formulas, you can add the NOT function like so:
=SUMPRODUCT(--NOT(ISFORMULA(data)))
This is the formula in cell F7. The NOT function reverses the TRUE FALSE results returned by the ISFORMULA function, and returns the resulting array directly to SUMPRODUCT:
=SUMPRODUCT({1;1;1;1;1;1;1;1;0;0;0;0}) // returns 8
As before, SUMPRODUCT sums the values in the array and returns a result of 8.
Note: in the dynamic array version of Excel, you can use the SUM function instead of the SUMPRODUCT function with the same result. To learn more about this topic, see Why SUMPRODUCT?