Use Excel FILTER With Multiple Criteria to Build a Clean Extract
Use Excel FILTER with AND, OR and mixed criteria. Follow a worked example, fix spill errors, and prepare a checked extract for public sharing.

To return Excel rows that meet all your criteria, multiply the conditions with *. To return rows that meet any criterion, add them with +. Keep each comparison in parentheses.
For example, this formula returns rows where Region is East and Status is Approved and Amount is at least 10,000:
=FILTER(A2:D7,(B2:B7="East")*(C2:C7="Approved")*(D2:D7>=10000),"No matching rows")
Microsoft documents multiplication for AND logic and addition for OR logic in its FILTER examples. FILTER creates a separate result; use it to prepare an extract rather than just hide rows in your working dataset. For the dropdown-filter workflow, see the general Excel filtering guide.
Set up a reproducible example
Enter this fictional project dataset in A1:D7. Store Amount as numbers, not text.
| Project_ID | Region | Status | Amount |
|---|---|---|---|
| R01 | East | Approved | 12000 |
| R02 | West | Approved | 8000 |
| R03 | East | Pending | 15000 |
| R04 | North | Approved | 20000 |
| R05 | West | Approved | 18000 |
| R06 | East | Approved | 6000 |
Copy the four headers into J1:M1, then enter the opening formula in J2. Leave the cells below and to the right empty. The expected result is R01 only, with all four columns returned.
FILTER follows this structure:
=FILTER(array,include,[if_empty])
array: the data to return—here,A2:D7, excluding headers.include: the row-by-row conditions that decide what stays.if_empty: an optional message or value when nothing matches.
For row filtering, the condition ranges must have the same number of rows as the source range. FILTER spills its output into neighboring cells when you press Enter. Microsoft’s function reference lists support for Excel for Microsoft 365, Excel 2021 and Excel 2024, including their Mac versions.
AND: require every condition
The opening formula multiplies three tests. Each test produces TRUE or FALSE for each row; multiplication treats those as 1 or 0. Only a row passing every test produces 1.
To make the extract reusable, put the criteria in cells:
| Cell | Value | Meaning |
|---|---|---|
| H2 | East | Required region |
| H3 | Approved | Required status |
| H4 | 10000 | Minimum amount |
Replace the formula in J2 with:
=FILTER(A2:D7,(B2:B7=H2)*(C2:C7=H3)*(D2:D7>=H4),"No matching rows")
Changing H2 to West returns R05. Changing H4 to 5000 while keeping West and Approved returns R02 and R05.
OR: accept either condition
To return projects in East or West, replace the formula in J2 with this addition-based formula:
=FILTER(A2:D7,(B2:B7="East")+(B2:B7="West"),"No matching rows")
This returns R01, R02, R03, R05 and R06. It does not impose a status or amount requirement.
OR can also combine different columns. A row passing both tests is still returned once; the tests determine whether to include that source row, not how many times to copy it.
Mix AND and OR with explicit grouping
For projects that are East or West, Approved, and worth at least 10,000, group the region alternatives before multiplying. Replace the formula in J2 with:
=FILTER(A2:D7,((B2:B7="East")+(B2:B7="West"))*(C2:C7="Approved")*(D2:D7>=10000),"No matching rows")
Expected result: R01 and R05.
The grouped region test is one requirement. Without that grouping, the formula can express a different rule and admit rows you intended to exclude.
Keep the extract reliable
For a growing dataset, convert the source range into an Excel table and name it Records. You can then use:
=FILTER(Records,(Records[Region]=H2)*(Records[Status]=H3)*(Records[Amount]>=H4),"No matching rows")
This formula uses the current criteria in H2:H4. Structured references adjust as table rows are added or removed. Keep the FILTER formula outside the table: spilled formulas are not supported inside Excel tables. If you get #SPILL!, check for cells blocking the output. Both behaviors are covered in Microsoft’s spilled-array guidance.
Other checks:
- Range mismatch: use matching row boundaries, such as
A2:D7withB2:B7, notB2:B6. - Unexpected results: inspect category spelling, extra spaces and numbers stored as text.
- Errors: errors in the condition ranges can propagate through FILTER. Fix the source rather than suppressing them indiscriminately.
- No matches: without
if_empty, an empty result produces#CALC!. A message such as “No matching rows” is not a dataset record. See the FILTER notes.
Prepare the result for public sharing
Before publishing an extract, check its IDs and row count against the intended rule. For the mixed example, the release should contain two records: R01 and R05.
Copy the headers and actual result rows into a new workbook using Paste Values. This keeps formula results rather than formulas, but does not preserve formatting; reapply necessary date or number formats in the release file. Microsoft’s paste options explain the distinction.
Include only public-safe columns; filtering rows does not remove sensitive fields. Keep the criteria, source provenance and extraction date with your publication documentation, outside the data rows.
Save that reviewed copy as XLSX or export its data sheet as CSV. Excel’s CSV export saves only the current worksheet, as explained in Microsoft’s export guidance. Follow the CSV export checklist to verify the saved file before uploading it for public use.