重点内容
适用版本
桌面版通用(Excel 365 / 2021 / 2019 等)。
第一步:建立分类命名范围表
在第二个工作表建立一份命名范围对照表,每个食物类别对应一个命名范围,范围里放该类别底下的具体品项:
Food:A1:A3(类别清单本身,例如 Pizza、Pancakes、Chinese)Pizza:B1:B4(披萨相关品项)Pancakes:C1:C2(松饼相关品项)Chinese:D1:D3(中餐相关品项)
📌 关键是:命名范围的名字必须跟 Food 清单里的选项文字完全一致(比如 Food 清单里写 "Pizza",命名范围也要叫 "Pizza"),后面的 INDIRECT 才能对上。
第二步:建立第一层下拉列表(选类别)
- 回到第一个工作表,选中 B1 单元格
- Data 选项卡 → Data Tools 组 → Data Validation
- Allow 选择 List
- Source 输入
=Food - 点击 OK
第三步:建立第二层下拉列表(联动品项)
- 选中 E1 单元格
- Data Validation
- Allow 选择 List
- Source 输入:
=INDIRECT($B$1)- 点击 OK
运作原理
INDIRECT 函数把一段文字转换成真正的单元格/范围引用。INDIRECT($B$1) 会先读取 B1 目前选的文字(例如 "Pizza"),再把这段文字当成命名范围的名字去查找,等于间接引用到 Pizza 这个命名范围,所以第二个下拉列表显示的就是 Pizza 底下的品项。B1 选项一改变,E1 的下拉列表内容也会跟着自动切换。
B1 选了 Pizza 后,E1 下拉列表自动只显示披萨相关品项的联动效果
函数速查
| 函数 | 语法 | 用途 | 例子 |
|---|---|---|---|
| INDIRECT | =INDIRECT(ref_text, [a1]) | 把文字字符串转换成实际的单元格/范围引用 | =INDIRECT($B$1) |
学完你会
常见错误
- 命名范围的名字跟 Food 清单里的选项文字对不上(比如命名范围叫 "PizzaList",清单里写的是 "Pizza"),导致 INDIRECT 找不到对应范围,第二层下拉列表变空白或报错
- 命名范围名字里用了空格或特殊符号(Excel 命名范围不支持空格),导致命名失败
- 忘记先选好 B1 的第一层选项就去测试 E1,第二层下拉列表理所当然是空的(因为 INDIRECT 还没有东西可以对应)
Sources
Blog / Website: