How to Count Unique Filtered Values as Zero When No Match Exists in Excel
Question details
The user needs a reliable formula to count unique values in a filtered array, ensuring that blank cells and instances with zero matches accurately return a count of 0 instead of 1.

- Product
- WPS Spreadsheet
- Device & OS
- not provided
- Scenario
- Counting unique items based on specific conditions while effectively handling empty cells and instances where no data matches the filter parameters.
- Observed behavior
- The COUNTA function incorrectly evaluates the #CALC! error or the empty-string fallback generated by the FILTER function as a non-empty cell, falsely returning a count of 1 instead of 0.
Verify that your spreadsheet software supports modern dynamic array functions such as UNIQUE and FILTER, as older versions may not recognize these formulas.
Use IFERROR, ROWS, UNIQUE, and FILTER to Return Zero
This is the most efficient and recommended method. It uses the ROWS function instead of COUNTA to count the actual array dimensions and wraps the formula in IFERROR to handle the no-match #CALC! error gracefully.
When the FILTER function finds no matches, it returns a #CALC! error. If you use COUNTA, it counts the error cell as 1. By switching to ROWS and adding IFERROR, you can intercept the error and force the formula to output 0.
Additionally, it is crucial to exclude blank cells within the source data before applying the UNIQUE function, otherwise the blank cell itself is counted as one unique value.
Identify the column you want to count unique values from (e.g., Column B) and the columns you want to apply your criteria to (e.g., Columns A and C).
To prevent empty cells from being counted as a unique value, incorporate a condition like (B:B<>"") within your filtering logic.
Select the target cell where you want the final count to appear. Type the formula: =IFERROR(ROWS(UNIQUE(FILTER(B:B,(A:A=H3)*(C:C=J1)*(B:B<>"")))),0) into the formula bar.
Press the Enter key. The formula will now accurately count the unique non-blank values matching your criteria, and return 0 if there are no matches.

Use the LET Function to Evaluate and Handle Errors
This approach breaks down the calculation into readable steps using the LET function, making it easier to maintain and update complex formula criteria.
Master Dynamic Arrays Easily with WPS Spreadsheet
WPS Spreadsheet fully supports dynamic array functions like FILTER, UNIQUE, and LET natively. You can process complex datasets, filter records, and accurately count distinct values without worrying about false error counts.
- 1. Open your file in WPS Spreadsheet: Launch WPS Office and open the workbook containing your dataset.
- 2. Select a calculation cell: Click on the specific cell where you want to display the unique count.
- 3. Input the dynamic formula: Type your combined formula using IFERROR, ROWS, UNIQUE, and FILTER directly into the formula bar.
- 4. Press Enter to calculate: Hit the Enter key to instantly calculate the results. WPS Spreadsheet smoothly processes the dynamic arrays and accurately outputs the 0 count.

Frequently Asked Questions
Why does COUNTA return 1 when the FILTER function finds no matches?
When the FILTER function finds no matches, it either returns an error (like #CALC!) or an empty string fallback (""). The COUNTA function treats both errors and empty strings as non-blank cells, thus counting them as 1. Using ROWS combined with IFERROR prevents this false count.
Can I use COUNTIFS to count unique filtered values instead?
COUNTIFS is excellent for standard conditional counting, but it cannot count 'unique' values directly. You must combine dynamic functions like UNIQUE and FILTER to extract distinct items before counting them.
What happens if I don't exclude blank cells in the FILTER criteria?
If you don't exclude blank cells (for example, by using B:B<>""), the UNIQUE function will evaluate the empty cells as a single unique blank value, incorrectly adding 1 to your final count result.
Is the LET function required to solve this problem?
No, the LET function is not mandatory. You can achieve the exact same result using IFERROR and ROWS in a single nested formula. LET simply helps make long, complex formulas easier to read and troubleshoot.




