如何在Excel中基于单个未排序源表制作可自动更新的3级联动下拉菜单
Office365 单源表动态3级联动下拉菜单实现方案
全程无需拆分源表、无需手动定义命名区域,适配未排序源表,源表新增数据后下拉选项可自动更新,仅用Excel 365原生函数即可实现,不需要编写VBA。
前置准备
- 选中ModelList表所有带数据的区域,按
Ctrl+T,勾选「表包含标题」后确认,将源表转为超级表,可在「表设计」选项卡把默认表名修改为ModelList方便识别 - 同样操作把资产追踪表也转为超级表,资产追踪表中需要设置下拉的三列建议统一命名为「资产类别」「制造商」「型号」
第一级(类别)下拉设置
- 选中资产追踪表「资产类别」列所有数据行单元格(不要选中表头),点击「数据」选项卡→「数据验证」,允许类型选「序列」,来源输入以下公式:
=UNIQUE(ModelList[类别]) - 勾选「提供下拉箭头」「忽略空值」后确认即可,第一级下拉会自动加载所有不重复的类别,源表新增类别后会自动同步
- 如果需要选项按顺序排列,公式可以改成
=SORT(UNIQUE(ModelList[类别]))
第二级(制造商)联动下拉设置
- 选中资产追踪表「制造商」列所有数据行单元格,打开数据验证,允许类型选「序列」,来源输入以下公式:
=UNIQUE(FILTER(ModelList[制造商],ModelList[类别]=[@资产类别],"无匹配数据")) - 公式会自动读取当前行选中的类别值,筛选对应类别下的所有制造商去重,无匹配结果时会显示提示内容
第三级(型号)联动下拉设置
- 选中资产追踪表「型号」列所有数据行单元格,打开数据验证,允许类型选「序列」,来源输入以下公式:
=UNIQUE(FILTER(ModelList[型号],(ModelList[类别]=[@资产类别])*(ModelList[制造商]=[@制造商]),"无匹配数据")) - 公式会同时匹配当前行选中的类别、制造商两个条件,筛选对应型号去重
注意事项
- 如果输入公式后数据验证报错,请先确认两个表都已经转为超级表,且公式里引用的列名和实际表的列名完全一致,没有多余空格、错别字
- 源表ModelList新增数据后,超级表会自动扩展收录范围,所有下拉菜单会自动加载新增的选项,不需要手动调整配置
内容的提问来源于stack exchange,提问作者Mark Reddington
相关产品推荐
相关产品推荐

