Dependent Dropdown Lists in Excel (Two Methods That Actually Work)

Dependent Dropdown Lists in Excel (Two Methods That Actually Work)
⏱ 3 min read

A dependent (cascading) dropdown shows only the options that make sense: choose Category = Displays and the second list offers only monitors. It prevents typing errors and makes forms feel professional.

In this article
  1. The data
  2. Method 1: FILTER spill range (Microsoft 365 / Excel 2021+)
  3. Method 2: INDIRECT with named ranges (every version)
  4. Clear the second choice when the first changes
  5. Which method?
  6. Related Posts

The data

Category Product
Accessories Keyboard
Accessories Mouse
Displays Monitor 24″
Displays Monitor 27″
Video Webcam HD

Method 1: FILTER spill range (Microsoft 365 / Excel 2021+)

  1. Put the list above in a table on a sheet called Lists (columns A:B).
  2. First dropdown in Form!B2: Data Validation → List → Source =UNIQUE(Lists!$A$2:$A$100) won’t work directly, so put =SORT(UNIQUE(Lists!A2:A100)) in Lists!D2 and use Source =Lists!$D$2#.
  3. In Lists!E2 enter =FILTER(Lists!B2:B100, Lists!A2:A100=Form!B2, "—"). It spills the matching products.
  4. Second dropdown in Form!C2: Data Validation → List → Source =Lists!$E$2#.

The # after a cell refers to its whole spill range, so the list grows and shrinks automatically when you add products.

Advertisement
💡 This method works for one form row. For a whole column of rows, use Method 2 or a small VBA change event.

Method 2: INDIRECT with named ranges (every version)

  1. Put each category’s products in its own column with the category as header: Accessories, Displays, Video.
  2. Select the whole block → Formulas → Create from Selection → Top row. Excel creates a name for each column.
  3. First dropdown (B2): List → Source = the header row.
  4. Second dropdown (C2): List → Source =INDIRECT(B2). Copy it down the column.
⚠️ Names cannot contain spaces. For a category like “Office Chairs”, Excel creates the name Office_Chairs, so use =INDIRECT(SUBSTITUTE(B2," ","_")).

Clear the second choice when the first changes

Changing Category leaves an old, invalid Product behind. A short sheet macro fixes it (right-click the sheet tab → View Code):

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Me.Range("B2:B500")) Is Nothing Then
        Application.EnableEvents = False
        Target.Offset(0, 1).ClearContents
        Application.EnableEvents = True
    End If
End Sub

Which method?

FILTER spill INDIRECT + names
Excel version 365 / 2021+ All
Adding items Automatic Update the named range
Many form rows One row per helper Works for every row
✨ Ask AI about this article

Stuck on a step? Ask a question and the AI answers using this article.

Free · AI can be wrong

Leave a Reply

Your email address will not be published. Required fields are marked *