
📎 This article includes 1 downloadable practice file ↓
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
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+)
- Put the list above in a table on a sheet called Lists (columns A:B).
- 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))inLists!D2and use Source=Lists!$D$2#. - In
Lists!E2enter=FILTER(Lists!B2:B100, Lists!A2:A100=Form!B2, "—"). It spills the matching products. - 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.
💡 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)
- Put each category’s products in its own column with the category as header: Accessories, Displays, Video.
- Select the whole block → Formulas → Create from Selection → Top row. Excel creates a name for each column.
- First dropdown (B2): List → Source = the header row.
- 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 |
📎 Practice files for this article
- 📗Working category u2192 product formINDIRECT + named ranges method, ready for 50 order rows.⬇ XLSX · 7 KB
Free to use for learning. Files with macros (.bas) are plain text — import them with Alt+F11 → File → Import File, and always test on a copy.