Table of Contents
Generating dynamic, filtered lists is a fundamental requirement for advanced data analysis and reporting within Excel. While simple filtering provides a temporary view of data, creating a permanent, automatically updating list based on specific criteria requires specialized techniques, often leveraging complex Array Formula structures. This comprehensive guide details the robust method using a combination of INDEX function, SMALL function, and conditional logic to extract relevant records from a dataset.
The process of creating a dynamic list begins not with the formula itself, but with methodical data preparation. Before attempting extraction, your source data must be organized into a clean table structure, ideally using defined range names or, at minimum, absolute cell references. This preparation ensures that the formulas remain accurate and easy to audit as your dataset evolves. Once the data integrity is confirmed, you must clearly define the parameters—the specific conditions or values (criteria) that dictate which records should be included in the resulting list. These criteria are typically input into a designated cell or range separate from the main data table, allowing for easy adjustments without modifying the core formula logic.
While newer versions of Excel (specifically Microsoft 365) offer the streamlined FILTER function, the array-based approach remains essential for users on older versions or those requiring highly customized extraction logic that goes beyond standard filtering capabilities. This powerful method bypasses the temporary nature of standard filtering and provides a persistent, linked output list that updates immediately whenever the source data or the specified criteria change. Mastering this technique is crucial for generating automated reports, dashboards, and advanced data visualizations efficiently.
Understanding the Core Concepts: Criteria-Based Filtering
Criteria-based filtering is the foundation of precise data extraction. Unlike searching, which simply locates data, filtering actively evaluates each row against a set of predefined conditions, returning only those rows that satisfy every condition simultaneously. When implemented using formulas, this filtering becomes dynamic; the resulting list is not a static copy but a direct reference to the original data set, ensuring data coherence and reducing manual update requirements.
The complexity of building this extraction system lies in translating human-readable criteria (e.g., “Team equals Mavs”) into computational logic that Excel can process efficiently. We rely on Boolean logic within the array structure, where TRUE values represent rows that meet the criteria, and FALSE values represent rows that fail. By mathematically manipulating these TRUE/FALSE arrays, we generate numerical positions that the SMALL function can then use to sequentially retrieve the corresponding values via the INDEX function.
For single-criteria filtering, the conditional test is straightforward: one column is compared against one specific value. However, when multiple criteria are necessary, these tests must be linked using multiplication (*) within the array context. In Excel array operations, multiplication acts as the logical AND operator; only rows where all conditions return TRUE (which Excel treats as 1) will result in a non-zero product, thereby isolating the desired records for extraction. This powerful mechanism allows for highly granular control over which data points are included in the final, filtered list.
The Advanced Array Formula Breakdown: INDEX, SMALL, and IFERROR
The core mechanism for generating a criteria-based list revolves around a powerful nested formula structure. This structure typically combines four essential functions: IFERROR function, INDEX function, SMALL function, and a conditional Array Formula built using IF and ROW function. Understanding the role of each component is vital for both implementation and troubleshooting. The provided basic formula below illustrates this architecture:
You can use the following basic formula to create a list based on criteria in Excel:
=IFERROR(INDEX($A$2:$A$12,SMALL(IF($B$2:$B$12=$B$2,ROW($B$2:$B$12)),ROW(1:1))-1,1),"")
Let’s dissect this formula step-by-step. The innermost conditional part, $B$2:$B$12=$B$2, is the core filter. It generates an array of TRUE/FALSE values. The subsequent IF function then checks this array: if TRUE, it returns the row number of that record using the ROW function; if FALSE, it returns FALSE. This creates a sparse array containing only the row numbers of the matching records and FALSE values for the rest.
The SMALL function then processes this sparse array. It is specifically designed to ignore the FALSE values and extract the row numbers in ascending order. The critical element here is ROW(1:1), which, when the formula is dragged down, changes to ROW(2:2), ROW(3:3), and so on. This mechanism generates the 1st smallest row number, then the 2nd smallest, and so forth, effectively retrieving the position of each matching record sequentially. Note the subtraction of 1 (-1) is often required when the data range does not start exactly at Row 1, adjusting the result back to a relative position within the defined data range ($A$2:$A$12).
Finally, the outer INDEX function uses the determined sequential row position to pull the corresponding value from the designated output column ($A$2:$A$12). As the list extraction continues past the last matching record, the SMALL function will eventually generate an error because it runs out of valid row numbers to find. This is where the IFERROR function is wrapped around the entire structure, ensuring that any subsequent errors are replaced with a clean empty string (“”), thus providing a clean, dynamic list without clutter.
This particular formula is configured to create a list of values found in the range A2:A12 where the corresponding value in the criteria range B2:B12 is equal to the specific comparison value defined in cell B2.
Prerequisites for Dynamic Filtering: Preparing Your Data
Successful implementation of this array-based filtering method hinges on meticulous data structuring and preparation. The first prerequisite is ensuring that your entire dataset is housed in a contiguous block of cells, organized with appropriate headers in the top row. Furthermore, every range used in the formula—the output range, the criteria range(s), and the row reference range—must be absolute references (using the dollar sign, e.g., $A$2:$A$12). This is crucial because the formula must be dragged down across multiple rows, and the source ranges must remain fixed.
The second critical step involves setting up the criteria input cell(s). For the examples below, we assume the criteria (e.g., the team name ‘Mavs’) is located in a specific cell, often referenced absolutely (e.g., $B$2 in the simplified formula). While this setup is straightforward, it is important to understand that the formula compares the entire criteria range (e.g., $B$2:$B$12) against this single criteria cell ($B$2). If you were to change the criteria value in $B$2, the resulting dynamic list would instantly update to reflect the new filter condition.
The following examples demonstrate how to apply this robust Array Formula architecture in a practical setting, utilizing a sample dataset containing player names, their respective teams, and positions. This visual context will clarify how the referenced cells in the formula correspond to the data used for extraction.
The following examples show how to use this formula in practice with the following dataset in Excel:

Example 1: Creating a List Based on One Specific Criteria
In our first scenario, the goal is to extract a list of all players associated with a single, defined team: the Mavs. This represents the simplest application of the criteria-based extraction technique. We need the formula to iterate through the Team column and return the corresponding player names only when the team matches our specified criteria. For this example, we will assume the data resides in columns A, B, and C, and the list will be generated in Column E.
To achieve this, the formula compares the values in the Team column ($B$2:$B$12) against the value in cell $B$2 (which, in the provided dataset image, contains “Mavs”). The resulting output is the list of names from the Player column ($A$2:$A$12) corresponding to the successful matches. This setup requires careful attention to the absolute references to ensure data integrity when dragging the formula.
We can use the following formula to create a list of players who are on the Mavs team:
=IFERROR(INDEX($A$2:$A$12,SMALL(IF($B$2:$B$12=$B$2,ROW($B$2:$B$12)),ROW(1:1))-1,1),"")
To implement this solution, the user must first enter the complete formula into the initial cell where the list begins, which is E2 in this case. Since this is an Array Formula in older versions of Excel, it must be entered by pressing CTRL + SHIFT + ENTER, which wraps the formula in curly braces {}. However, if you are using a modern version of Excel that supports dynamic arrays (Microsoft 365), you can simply enter the formula normally, and it will automatically spill the results down the column.
We can type this formula into cell E2 and then drag it down to the remaining cells in column E to create a list of players who are on the Mavs team:

The successful execution of this formula isolates the desired records and presents them cleanly in column E. The list stops automatically when the SMALL function runs out of row numbers and triggers the IFERROR function to return blanks. Based on the provided dataset, the filtered output contains three distinct player names who meet the specified criteria:
The result is a list of three players:
- Andy
- Bob
- Frank
We can look at the original dataset to confirm that all three of these players are indeed affiliated with the Mavs team, validating the accuracy of the single-criteria extraction.
Extending the Logic: Handling Multiple Criteria
The true power of the array method becomes evident when filtering is required based on two or more simultaneous conditions. While the structure of the formula remains largely the same, the conditional test within the IF function must be expanded to handle the intersection of these conditions. In Excel array logic, multiple criteria linked by the AND condition are implemented by multiplying the individual conditional tests together.
When we multiply two Boolean arrays—for example, one checking the Team column and another checking the Position column—only the elements where both arrays return TRUE (i.e., both are 1) will result in a product of 1. Any mismatch (TRUE * FALSE or FALSE * FALSE) results in 0, effectively ensuring that only records satisfying all conditions pass the filter. This resulting array of 1s and 0s is then fed into the IF function, which proceeds to extract the ROW function values only where the product was 1.
This technique is highly scalable; you can add third, fourth, or even more conditions by simply enclosing each condition in parentheses and multiplying them sequentially within the IF function’s logical test argument. It is imperative that all conditional ranges (e.g., Team range, Position range) must have the exact same dimensions and starting points as the output range for the multiplication to execute correctly as an Array Formula.
Example 2: Applying Filters Using Multiple Criteria
For our second example, we heighten the specificity of the filter by requiring two distinct criteria to be met: the player must be on the Mavs team AND their position must be Guard. We will reference the Team criteria from cell $B$2 and the Position criteria from cell $C$2.
The core change in the formula is the introduction of the second conditional test: ($C$2:$C$12=$C$2). This second test is multiplied by the first test ($B$2:$B$12=$B$2). Only rows where both checks return TRUE will proceed to the next stage of the formula. All absolute references must be maintained, and the formula must still be confirmed as an array formula (if required by your Excel version).
We can use the following formula to create a list of players who are on the Mavs team and have a position of Guard:
=IFERROR(INDEX($A$2:$A$12,SMALL(IF(($B$2:$B$12=$B$2)*($C$2:$C$12=$C$2),ROW($B$2:$B$12)),ROW(1:1))-1,1),"")
As with the single-criteria example, this formula must be entered into cell E2 and then accurately copied or dragged down column E. Because the formula is significantly more restrictive due to the dual criteria, we anticipate a shorter resulting list. The use of parentheses around each conditional multiplication is crucial for enforcing the correct order of operations before the results are processed by the surrounding IF, SMALL function, and INDEX function.
We can type this formula into cell E2 and then drag it down to the remaining cells in column E to create a list of players who are on the Mavs team and have a position of Guard:

Upon reviewing the output in Column E, we observe that the successful implementation of the multiple criteria logic has correctly narrowed the results. Only those players who satisfy both the ‘Mavs’ team condition and the ‘Guard’ position condition are included in the final dynamic list. This demonstrates the efficiency and precision of conditional array filtering for complex data extraction tasks.
The result is a list of two players:
- Andy
- Frank
We can look at the original dataset to confirm that both of these players are on the Mavs team and simultaneously hold the position of Guard.
Conclusion: Streamlining Data Extraction
The dynamic list extraction method utilizing the INDEX function and SMALL function provides a robust, backward-compatible solution for generating lists based on one or more criteria in Excel. While initially complex, mastering the nested structure of this Array Formula opens up possibilities for highly customized and automated data reporting.
For users on modern versions of Excel (Microsoft 365), the dedicated FILTER function offers a simpler, more readable syntax for achieving the exact same results without the need for array entry (CTRL + SHIFT + ENTER). However, understanding the underlying array logic discussed here is essential for optimizing performance and tackling more advanced scenarios where custom formula combinations are necessary to achieve specific data manipulation goals.
By defining clear criteria and implementing precise formulas, analysts can significantly enhance their workflow, transforming static datasets into dynamic, queryable resources that update instantaneously, providing powerful insights at a moment’s notice.
Cite this article
stats writer (2025). How to Easily Create a Filtered List in Excel Based on Your Criteria. PSYCHOLOGICAL SCALES. Retrieved from https://scales.arabpsychology.com/stats/how-to-create-a-list-based-on-criteria-in-excel/
stats writer. "How to Easily Create a Filtered List in Excel Based on Your Criteria." PSYCHOLOGICAL SCALES, 28 Nov. 2025, https://scales.arabpsychology.com/stats/how-to-create-a-list-based-on-criteria-in-excel/.
stats writer. "How to Easily Create a Filtered List in Excel Based on Your Criteria." PSYCHOLOGICAL SCALES, 2025. https://scales.arabpsychology.com/stats/how-to-create-a-list-based-on-criteria-in-excel/.
stats writer (2025) 'How to Easily Create a Filtered List in Excel Based on Your Criteria', PSYCHOLOGICAL SCALES. Available at: https://scales.arabpsychology.com/stats/how-to-create-a-list-based-on-criteria-in-excel/.
[1] stats writer, "How to Easily Create a Filtered List in Excel Based on Your Criteria," PSYCHOLOGICAL SCALES, vol. X, no. Y, ص Z-Z, November, 2025.
stats writer. How to Easily Create a Filtered List in Excel Based on Your Criteria. PSYCHOLOGICAL SCALES. 2025;vol(issue):pages.
