【问题标题】:Dynamically changing dropdown in excel动态更改excel中的下拉列表
【发布时间】:2014-05-20 13:46:04
【问题描述】:

场景如下,

我有一个选项列表要填写在一个单元格中,比如 A1。可以使用 Data Validation-List 填充这些选项,这会导致下拉菜单出现在 A1 中。现在我希望 B1 包含一个下拉列表,其中的条目根据 A1 中的数据进行更改。

作为一个人为的例子,假设 A1 提供哺乳动物、爬行动物和两栖动物的选择。如果我选择哺乳动物,我应该在 B1 中选择 man, cat, dog 作为选项。如果我选择爬行动物,蛇和蜥蜴会作为选项出现在 B1 中。如果我选择两栖动物,我应该选择青蛙和蟾蜍。

我想避免为此使用 VBA。

【问题讨论】:

    标签: excel


    【解决方案1】:

    使用验证列表中的 INDIRECT 公式,此处清楚说明:

    www.contextures.com/xlDataval02.html

    【讨论】:

    • 其实这个解决方案比我的要简单很多。虽然我做了一些不同的事情——我使用了“表单”下拉菜单,但这是基于数据验证的。无论如何,这可能更接近作者想要的问题。 +1
    【解决方案2】:

    给你,一个完全没有 VBA 的解决方案。它使用“表单”工具栏中的实际组合框控件:

    • 向您的工作簿添加三个额外的工作表。我称它们为“领域”、“数据”和“动物”
      • 在工作表“域”上,我做了:
        • 输入(从单元格 A1 向下)“哺乳动物”、“爬行动物”、“两栖动物”
        • 为范围“域!$A:$A”定义了一个名称:“域”
        • 为范围“domain!$B:$1”定义了一个名称:“DomainChoice”
      • 在工作表“数据”上,我做了:
        • 输入(从单元格 A1 向下)“man”、“cat”、“dog”
        • 输入(从单元格 B1 向下)“snake”、“lizard”
        • 输入(从单元格 C1 向下)“frog”、“toad”
      • 在“动物”表上,我做了:
        • 在A1中,输入如下公式
          =T(INDIRECT("data!R" & ROW() & "C" & DomainChoice; FALSE))
        • 将此公式填充到第 50 行。
        • 为范围“animal!$A:$A”定义了一个名称:“Animal”
        • 为范围“animal!$B:$1”定义了一个名称:“AnimalChoice”
    • 在主工作表上,我创建了两个组合框控件:
      • 在框 1 中,我将属性(“格式控制...”)定义如下:
        • “输入范围:”-“域”
        • “单元格链接”:-“域选择”
      • 在方框 2 中,我将属性定义如下:
        • “输入范围:”-“动物”
        • “单元格链接”:-“AnimalChoice”

    现在“哺乳动物”、“爬行动物”、“两栖动物”应该出现在框 1 中,框 2 的内容应该根据选择而改变。

    查看各种表格以了解幕后发生的事情。唯一的要求是“域”表中值的顺序与“数据”表上的列相对应,并且动物的数量只能与“动物”表上的公式填充的行数一样多。

    如果需要,您可以隐藏三个辅助工作表。

    公式,解释:

    T(                // returns an empty string unless the argument is a text value
      INDIRECT(       // returns the value at the given reference string
        "data!R"      // build a dynamic reference string to "data!R1C1"
        &     
        ROW()         // the current row, changes as you fill down the formula
        &
        "C" 
        & 
        DomainChoice  // defined name of "domain!$B:$1", contains box 1 choice
      ; 
        FALSE         // flag to indicate that the formula is in "R1C1" format
      )
    )
    

    【讨论】:

      猜你喜欢
      • 2022-01-07
      • 1970-01-01
      • 1970-01-01
      • 2011-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多