【问题标题】:Update dynamic drop-down list in excel without VBA在没有VBA的情况下更新excel中的动态下拉列表
【发布时间】:2019-01-22 14:11:32
【问题描述】:

我想在 excel 中创建 2 个相关的下拉列表,第一个下拉值决定第二个下拉列表必须显示什么值。

使用以下 OFFSET 公式来动态填充第二个下拉值。

=OFFSET($B$2,MATCH($G$3,$B$3:$B$17,0),1,COUNTIF($B$3:$B$17,$G$3),1)

。我还准备了一个示例文件,展示了我使用的公式。

当我选择第一个下拉值时,第二个下拉列表会更新。但是,当我在第一个下拉列表中选择另一个值时,第二个列表不会立即显示这些值。

示例文件链接 - https://drive.google.com/file/d/1rwt6B-INgrQ0NgxIl-Nc8JeoGziBaiL2/view?usp=sharing

【问题讨论】:

    标签: excel excel-formula


    【解决方案1】:

    这就是我所说的具有挑战性的要求。
    我们将使用秘密Evaluate 公式来实现这一点。

    免责声明:

    • 确保一个状态永远不会与其同行分离(例如,不要在表格末尾添加另一个 New,而是插入一列以便状态保持在包中)。
    • 请注意,更改状态不会清除定义单元格。简单的 VBA 就可以解决问题(这是唯一需要 VBA 的地方)。

    解决方案:

    1. 让我们创建一个公式,返回我们要在下拉列表中使用的范围的地址。您可以将其粘贴到 I3。
      =ADDRESS(ROW(OFFSET($C$2,MATCH($G3,$B$3:$B$17,0),0)), COLUMN($C$2)) & ":" & ADDRESS(ROW(OFFSET($C$2,MATCH($G3,$B$3:$B$17,0)+COUNTIF($B$3:$B$17,$G3)-1,0)),COLUMN($C$2))
      如果我的法语 Excel 没有出错,你应该得到你在 G3 中状态的所有定义的地址。将公式向下扩展几行,您会看到它始终匹配 G4、G5 等。

    2. 是时候定义名称了(菜单公式 > 名称管理器 > 新建),我们将其称为 DynamicRange。
      首先,我建议将范围更改为您的工作表(窗口中的下拉菜单)。
      接下来,将我们之前尝试过的公式放入EVALUATE
      =EVALUATE(ADDRESS(ROW(OFFSET($C$2,MATCH($G3,$B$3:$B$17,0),0)), COLUMN($C$2)) & ":" & ADDRESS(ROW(OFFSET($C$2,MATCH($G3,$B$3:$B$17,0)+COUNTIF($B$3:$B$17,$G3)-1,0)),COLUMN($C$2)))

    这是它的样子(除了我都是法语......)

    1. 返回数据验证并在列表源中输入=DynamicRange

    成功完成上述操作后,列表很容易定义。

    【讨论】:

    • PS:你不需要我们在步骤 1 中粘贴的 I3 中的公式。我只是想让你检查它是否得到你想要的
    • 完成这项工作。但仍然不会根据第一个下拉列表的选择动态更新第二个下拉列表的值。我无法使用 VBA,因为该文件在 Online office 365 中维护,并且将 VBA 添加到其中不允许我再在线打开该文件。
    • 在我的 Office 2013 上,下拉列表在没有 VBA 的情况下正确更新。您是什么意思“完成工作但不更新”?能否请您更具体地描述一下。
    • Excel 365 无法识别您提供的评估公式。每当我单击下拉列表时都会引发错误。
    【解决方案2】:

    我知道您要完成什么(获取第二个单元格值以自动更新到第一个列表条目),但我认为不使用 VBA 是不可能的。

    我的理解是“数据验证”只验证单元格内的数据,不会改变现有值。

    如果您想更改现有值,那么我会研究 VBA。

    【讨论】:

    • 我的理解是他希望 CELL 值自动更新到下拉列表中的第一个行项。您建议的结果与 OP 的功能代码相同。我仍然不相信有一种方法可以在不使用 VBA 的情况下自动更新数据验证单元格。
    • 是的。悲伤的状态。尝试将 if then 语句添加到第二个下拉单元格,但是一旦我从第二个下拉列表中选择任何值,公式就会被覆盖。
    猜你喜欢
    • 2021-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 2020-09-08
    • 2022-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多