excel|如何动态引用 Excel 动态区域,从而成就动态下拉菜单?( 二 )


有关 unique 函数的详解 , 可参阅 Excel – 提取不重复值 , 终于有专门的函数了? 。


3. 在 I2 单元格中输入以下公式 --> 向右向下拖动复制公式:
=VLOOKUP($H2&COLUMN(A1)$A:$C30)
公式释义:

  • COLUMN(A1):计算 A1 单元格的列号 , 单元格向右拖动的时候 , 列号递增 , 向下拖动则不变;
  • $H2&..:将 $H2 单元格与上述列号连接起来 , 得到一组与 A 列相匹配的值;
  • VLOOKUP(...$A:$C30):在区域 $A:$C 中查找上述值 , 返回第 3 列的值
* 请注意:$H2 单元格的列标需要绝对引用 , 行号要相对引用;查询区域 $A:$C 要绝对引用 。


接下来开始制作下拉菜单 。
4. 选中 E2 单元格 --> 选择菜单栏的“数据”-->“数据验证”-->“数据验证”

5. 在弹出的对话框中选择“设置”选项卡 --> 按以下方式设置 --> 点击“确定”:
  • 允许:选择“序列”
  • 来源:输入“=$H$2#”
* 敲黑板 , 今天的重点知识点来了:

  • 前面已经说了 , sort 函数返回的结果是一个动态区域;
  • 引用这个动态区域的方式 , 只要在区域的第一个单元格后面加个“#”号 , 就能动态地引用这个区域了 。



然后创建二级联动下拉菜单 。
6. 按 Ctrl+F3 --> 在弹出的对话框中点击“新建”按钮

7. 在弹出的对话框中按以下方式设置:
  • 名称:输入“销售一部”
  • 引用位置:选择 I2:K2 区域


8. 再次点击“新建”按钮 --> 用同样的方式创建其他部门的名称 。





9. 选中 F2 单元格 --> 选择菜单栏的“数据”-->“数据验证”-->“数据验证”

10. 在弹出的对话框中按以下方式设置 --> 点击“确定”:

  • 允许:选择“序列”
  • 来源:输入“=INDIRECT($E$2)”
有关 indirect 函数在二级联动下拉菜单中的应用 , 请参阅 Excel indirect 函数(2) – 制作多级联动菜单(文末彩蛋) 。

现在选择“部门”下拉菜单中的选项 , “姓名”下拉菜单中的选项就会动态变成相应部门的人员列表 。




既然今天的重点讲的是动态区域的引用 , 那么我们继续验证一下 , 如果部门列的源数据更新了 , 最终是否会导致下拉菜单自动更新 。
11. 修改任意一个部门的名称 , 如下图所示 。

我什么都没做 , H 列就自动增加了这个新的部门名 , 这就是动态数组结果的魅力所在 。

因为“部门”下拉菜单引用的是动态区域 , 所以下拉选项中也自动新增了这个部门 。

这简直太方便了 , 所有联动一气呵成 , 连刷新动作都不需要 。


12. 向下拖动 I 列的公式 , 就能查询出新部门对应的人员 。


13. 此时只要重复步骤 6、7 , 创建新的名称列表 , 就能在“名称”下拉菜单中增加新的联动列表 。

【excel|如何动态引用 Excel 动态区域,从而成就动态下拉菜单?】