代码之家  ›  专栏  ›  技术社区  ›  T.Omalley

数据验证源Excel中的嵌套函数

  •  0
  • T.Omalley  · 技术社区  · 2 年前

    是否可以创建一个依赖于另一个下拉列表的下拉列表,而不在电子表格上显示实际数据?

    举个例子,假设Cell A1有一个下拉列表,在数据验证源中,我写道:

    Building 1, Building 2, Building 3
    
    

    现在在单元格A2中,我想要一个第二个下拉列表,它考虑了第一个下拉列表中的内容。在A2的源代码框中,我尝试了两种不同的代码。第一个是一个简单的IF语句:

    
    =IF(A1="Building 1", "Office, Retail, Prison", IF(A1="Building 2", "School, Pre-School, Sixth Form", IF(A1="Building 3", "Higher Ed, Further Ed", "")))
    
    

    这将弹出错误消息:

    列表源必须是分隔的列表,或者是对单行或单列的引用

    据我所知,它不喜欢逗号之外还有符号的事实。然后我尝试了一个文本联接功能:

    
    =TRANSPOSE(SPLIT(TEXTJOIN(",", TRUE, IF(A1="Building 1", "Office, Retail, Prison", IF(A1="Building 2", "School, Pre-School, Sixth Form", IF(A1="Building 3", "Higher Ed, Further Ed", "")))), ","))
    
    

    然而,Excel不喜欢这个代码,说它有问题。我个人看不到它,但新鲜的眼睛总是有帮助的。

    我知道在电子表格中制作一个数据列可以很容易地做到这一点,但我想尝试在没有数据列的情况下这样做,因为它看起来不整洁。

    还是我必须用VC硬编码?

    谢谢你的帮助!

    1 回复  |  直到 2 年前
        1
  •  0
  •   kevin    2 年前

    制作一个两列的列表,如F:G所示。

    对于 A1 ,数据验证应为建筑物列表。

    对于 A2 ,创建第二个列表,如中所示 I2 在这里,根据A1的值过滤第一个列表。中的公式 I2 是:

    =FILTER($G$1:$G$8,$F$1:$F$8=$A$1)
    

    如果F列中的建筑类型与中选择的建筑类型匹配,则此公式将仅返回G列中的建筑物类型 A1

    然后,在中进行数据验证 B2 ,使用:

    =$I$1#
    

    请注意 # 在引用的末尾。这意味着它将不仅仅是阅读 I2 ,但它将读取中公式中的所有值 I2 ,这是您想要的建筑列表。

    enter image description here

    enter image description here