【问题标题】:Excel - Dynamic Dropdown ListExcel - 动态下拉列表
【发布时间】:2021-02-09 03:20:15
【问题描述】:

希望在表格中创建一个动态下拉列表。下面的照片链接应该有助于将问题可视化。

我要做的是在一个表中创建一个动态下拉列表,使用同一张表中的一列和另一张表中第二个表中的两列。

带有下拉列表的列应将其左侧的列与第二个表的右侧列进行比较。如果下拉单元格左侧的单元格等于第二个表格中值单元格右侧的单元格,则下拉列表中的选项应该是第二个表格左列中的值。|

下面的照片显示了表格设置,左上角表格旁边的数字显示了下拉列表中应该包含的选项。

编辑:我希望在不使用 Visual Basic 的情况下做到这一点,但如果它是唯一的选择,我会接受它。

【问题讨论】:

  • 您需要先设置帮助列来过滤数据,然后使用验证拉下拉。
  • 您能详细说明一下吗?
  • 你有哪个版本的excel?
  • 查看我的答案并仔细遵循每一步。请注意,它仅适用于Excel365

标签: excel


【解决方案1】:

这称为依赖数据验证。您需要设置范围名称。每个引用一个,另外一个用于使用 Indirect 将引用解析为下拉列表。我设置了这四个范围名称,并使用 List > =MyDropdown

进行数据验证
a   =Sheet1!$H$2:$H$5
b   =Sheet1!$H$6:$H$8
cc  =Sheet1!$H$9
MyDropdown  =INDIRECT(Sheet1!$A2)

请注意,INDIRECT() 函数中的引用与定义引用时处于活动状态的单元格相关。选择第 2 行中的单元格,然后使用该公式创建一个新的命名范围。如果您选择另一个单元格,这将不起作用。

还要注意,命名范围不能称为“c”,所以我不得不使用另一个引用名称。

【讨论】:

  • 如果解决了您的问题,请按照tour 中的说明标记答案。如果没有,请发表评论,以便我跟进。
  • 这个解决方案似乎意味着我必须在我的第二个表中指定多个范围名称。因此,如果我要在第二个表中添加另一个项目,我将不得不重新定义我的范围名称,对吗?我问,因为我希望避免这样做,如果我是,我可能更愿意为每个范围名称创建不同的表,而不是一个包含所有这些名称的单个表。
【解决方案2】:

根据上面的数据设置把下面的公式放到H6

=TRANSPOSE(UNIQUE(E6:E13))

然后将下面的公式放入H7单元格并向右拖动。

=FILTER($D$6:$D$13,$E$6:$E$13=H$6)

以上公式会自动溢出数据。然后在范围A1:A10 的数据验证中放入以下公式

=H$6$#

#H$6$ 之后将采用Unique() 公式动态输出的数据直到最后一个数据。

那么对于范围B2:B10的数据验证公式会

=INDEX($H$7:$J$10,,MATCH($A1,$H$6#,0))

下拉结果

【讨论】:

    猜你喜欢
    • 2022-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-13
    相关资源
    最近更新 更多