How to Return Multiple Lookup Values in Excel Using the FILTER Function

📅 Jun 05, 2026 📝 Sarah Miller

Retrieving multiple matching records in Excel often frustrates data analysts, as traditional VLOOKUP and INDEX/MATCH formulas are structurally limited to returning only the first match they encounter. While these legacy search methods serve basic single-point queries well, they fail when you require a comprehensive, multi-row dataset.

The modern FILTER function solves this constraint, dynamically extracting every relevant record-such as instantly pulling all sales transactions for "Region West." Please note the stipulation that this advanced approach requires Excel 365 or Excel 2021. Below, we will break down the exact formula syntax and provide a step-by-step implementation guide.

How to Return Multiple Lookup Values in Excel Using the FILTER Function

For decades, Excel users have relied on formulas like VLOOKUP, INDEX/MATCH, and more recently, XLOOKUP, to retrieve information from data tables. While these functions are incredibly powerful, they share a fundamental limitation: they are designed to return only the first matching value they encounter. If your dataset contains multiple instances of a lookup value and you need to retrieve all of them, traditional lookup formulas fall short without complex array workarounds.

Fortunately, the introduction of dynamic arrays in Excel (available in Microsoft 365 and Excel 2021) brought a game-changing solution: the FILTER function. By using FILTER, you can easily look up and return multiple matching values in a dynamic list that automatically updates when your source data changes. In this comprehensive guide, we will explore how to harness the power of the FILTER function to perform multi-value lookups, manage multiple criteria, and format your output like a pro.

Understanding the FILTER Function Syntax

Before diving into practical lookup scenarios, let's look at the basic syntax of the FILTER function:

=FILTER(array, include, [if_empty])
  • array (Required): The range of cells, column, or table that you want to filter and retrieve data from.
  • include (Required): A boolean array (a series of TRUE/FALSE values) that defines the condition(s) for filtering. The height or width of this range must match the array.
  • if_empty (Optional): The value or message to return if no records meet your lookup criteria (e.g., "No Results Found"). If omitted, the formula returns a #CALC! error when no matches are found.

Setting Up Our Sample Dataset

To illustrate these techniques, we will use a sample sales dataset. Assume this table spans the range A1:E10:

ID (Col A) Employee Name (Col B) Department (Col C) Region (Col D) Sales (Col E)
101Alice SmithSalesNorth$12,000
102Bob JonesITEast$8,500
103Charlie BrownSalesSouth$15,000
104Diana PrinceMarketingWest$9,200
105Evan WrightSalesNorth$11,500
106Fiona GallagherITWest$7,800
107George MillerSalesEast$14,100
108Hannah AbbottMarketingNorth$10,000
109Ian MalcolmSalesNorth$13,500

Scenario 1: Basic Multiple-Value Lookup (One Criterion)

Let's say you want to look up and display all records belonging to the Sales department. Using traditional VLOOKUP, you would only retrieve "Alice Smith". With FILTER, you can extract the entire list of matching rows instantly.

Enter the following formula in an empty cell (e.g., G2):

=FILTER(A2:E10, C2:C10="Sales", "No records found")

How It Works:

  1. A2:E10 is the data range we want to extract.
  2. C2:C10="Sales" checks every row in the Department column. It generates an array of TRUE and FALSE values: {TRUE; FALSE; TRUE; FALSE; TRUE; FALSE; TRUE; FALSE; TRUE}.
  3. The FILTER function keeps only the rows corresponding to TRUE and "spills" them into the adjacent cells.

Because this is a dynamic array formula, you do not need to drag it down. The results will automatically spill horizontally and vertically to accommodate the matching records.

Scenario 2: Multi-Value Lookup with AND Logic (Multiple Criteria)

Often, you need to filter data based on more than one condition. For instance, what if you want to look up all employees who are in the Sales department and work in the North region?

To apply "AND" logic in the FILTER function, you multiply the criteria conditions together using the asterisk (*) operator. Here is the formula:

=FILTER(A2:E10, (C2:C10="Sales") * (D2:D10="North"), "No matches")

Why Multiplication Represents AND Logic:

In Excel, Boolean values are treated numerically as TRUE = 1 and FALSE = 0. When you multiply two conditions, Excel performs an element-by-element multiplication:

  • TRUE * TRUE becomes 1 * 1 = 1 (TRUE)
  • TRUE * FALSE becomes 1 * 0 = 0 (FALSE)
  • FALSE * FALSE becomes 0 * 0 = 0 (FALSE)

Only rows where both conditions are met will result in 1 (TRUE) and be returned by the formula. In our sample data, this will return the rows for Alice Smith, Evan Wright, and Ian Malcolm.

Scenario 3: Multi-Value Lookup with OR Logic

If you want to return records that match either of your criteria, you must use "OR" logic. In Excel array math, OR logic is represented by the addition (+) operator.

Suppose you want to lookup employees who work in either the IT department or the Marketing department. You would write:

=FILTER(A2:E10, (C2:C10="IT") + (C2:C10="Marketing"), "No matches")

Why Addition Represents OR Logic:

When you add conditions together:

  • TRUE + FALSE becomes 1 + 0 = 1 (TRUE)
  • FALSE + FALSE becomes 0 + 0 = 0 (FALSE)
  • TRUE + TRUE becomes 1 + 1 = 2 (Any non-zero number is treated as TRUE by Excel)

As long as at least one of the conditions evaluates to TRUE, the sum will be greater than zero, prompting the FILTER function to return that row.

Scenario 4: Extracting Only Specific Columns

By default, if you pass A2:E10 as your array, Excel returns all five columns. However, you might only want to retrieve the Employee Name and the Sales amount for your filter results, omitting the ID, Department, and Region.

To accomplish this, you can nest the FILTER function inside the CHOOSECOLS function (available in Excel 365):

=CHOOSECOLS(FILTER(A2:E10, C2:C10="Sales"), 2, 5)

How It Works:

  • The inner FILTER retrieves all rows where Department is "Sales".
  • The outer CHOOSECOLS function intercepts this result and extracts only the 2nd column (Employee Name) and the 5th column (Sales) from the filtered array.

Best Practices and Troubleshooting

When implementing dynamic lookups with the FILTER function, keep these best practices in mind to avoid errors:

  1. Watch Out for the #SPILL! Error: Dynamic arrays need empty space to output their results. If there is pre-existing text or data in the cells where the formula tries to spill, Excel will throw a #SPILL! error. Simply clear the destination range to resolve it.
  2. Ensure Identical Range Sizes: The include argument range must span the exact same number of rows (or columns) as the array argument. For example, =FILTER(A2:E10, C2:C8="Sales") will return a #VALUE! error because the rows don't align.
  3. Absolute Referencing: If you plan to copy your formulas elsewhere, remember to use absolute references (like $A$2:$E$10) to lock your source ranges.

Conclusion

The FILTER function has revolutionized data retrieval in Excel. It bridges the gap that VLOOKUP and XLOOKUP left open by offering a native, elegant, and dynamic way to perform multi-value lookups. Whether you are dealing with single conditions, complex boolean criteria, or need to extract customized column arrangements, mastering the FILTER function will significantly streamline your data analysis workflows and eliminate the need for complicated VBA macros or legacy array formulas.

Disclaimer:
The documents and templates provided on this page are for informational and illustrative purposes only. They do not constitute professional, legal, or financial advice, and should not be relied upon as such. Because individual circumstances and regulatory requirements vary, these materials may not be suitable for your specific needs. We recommend consulting with a qualified professional before adapting or using any of these examples for official or commercial purposes.