Dependent (Cascading) Drop-Down List

Excel Formulas › Data Validation

All versionsINDIRECTNamed ranges

A dependent drop-down narrows the second list based on the first — pick a Country and the State list shows only that country’s states. The classic build uses named ranges plus INDIRECT.


Quick formula: after naming each group’s list to match the first drop-down’s values, set the second cell’s Source to:
=INDIRECT(A2)
INDIRECT turns the text in A2 (e.g. “West”) into a reference to the range named West — so the second list follows the first.

Functions used (tap for the full reference guide):

How to set it up

Lay out each category’s items in its own column, then create a named range for each column whose name exactly matches the category value.

ABC
1FruitVegDairy
2AppleCarrotMilk
3BananaPeaCheese
4CherryKaleYogurt

The formula

The second drop-down’s Source (where A2 holds the category chosen in the first drop-down):

=INDIRECT(A2) // A2 = "Fruit" → the named range Fruit

How it works

The build has three parts:

  1. Create the first drop-down normally — a List validation of the category names (Fruit, Veg, Dairy).
  2. Select each category’s list of items and create a named range whose name is exactly that category (select B2:B4, type Veg in the Name Box). Names must match the first list’s values exactly — no spaces.
  3. For the second cell, set Data Validation → List → Source to =INDIRECT(A2).
  4. Now choosing “Veg” in A2 makes INDIRECT return the Veg named range, so the second drop-down lists only Carrot, Pea, Kale.

Spaces are the usual culprit. Named ranges can’t contain spaces, but a category like “New York” can. Substitute the space out in both the name and the formula: name it New_York and use =INDIRECT(SUBSTITUTE(A2," ","_")).

Try it: interactive demo

Live demo

Pick a category; the second list updates to match — exactly what INDIRECT does.

Variations

Handle spaces in category names

Swap spaces for underscores in both name and formula:

=INDIRECT(SUBSTITUTE(A2, " ", "_"))

Modern alternative: FILTER (Excel 365)

Skip named ranges — drive the second list from a spill:

=FILTER(Items, Category=A2)

Three levels deep

Chain it: the third drop-down’s Source is =INDIRECT(B2), where B2 is the second selection.

Pitfalls & errors

Second list is empty or errors. The named range name doesn’t exactly match the first cell’s value — check spelling, capitalization, and stray spaces.

Changing the first cell doesn’t clear the second. An old selection can remain invalid. Add a formula or a small macro to blank the dependent cell when the parent changes, or just re-pick.

INDIRECT is volatile. It recalculates a lot; on huge models that can slow things down. The Excel 365 FILTER approach avoids INDIRECT entirely.

Practice workbook

📊
Download the free Dependent (Cascading) Drop-Down List practice workbook
A working two-level cascading drop-down (named ranges + INDIRECT) you can pick through, plus the FILTER-based 365 version and setup steps. No sign-up required.

Frequently asked questions

How do I create a dependent drop-down list in Excel?
Make the first drop-down from the category names, create a named range for each category's items (name matching the category exactly), then set the second cell's Data Validation List Source to =INDIRECT(A2).
Why is my dependent drop-down empty?
The named range doesn't match the first cell's value exactly. Check spelling and capitalization, and remember named ranges can't contain spaces, e.g. use New_York with =INDIRECT(SUBSTITUTE(A2," ","_")).
Can I make cascading drop-downs without INDIRECT?
Yes, in Excel 365 use a spill formula like =FILTER(Items, Category=A2) as the source, which avoids named ranges and the volatile INDIRECT function.

Stop fighting formulas. Learn them in a day.

This recipe is one of hundreds of real-world formulas we teach. Our Excel Formulas & Functions class covers lookups, logic, text, and dynamic arrays hands-on — live in Dallas–Fort Worth, Houston, Austin, Oklahoma City, Denver, or online.

See the Formulas & Functions Class

Related formulas: Create a drop-down list · Unique sorted list · Extract matching rows

Function references: INDIRECT