【问题标题】:Cell validation from a CSV list stored in a cell来自存储在单元格中的 CSV 列表的单元格验证
【发布时间】:2013-02-21 11:01:38
【问题描述】:

我一直在 Stack Overflow 上进行搜索,并且通常在谷歌上搜索,但我不断获得有关使用多单元格范围作为验证源 (like this one) 的教程。

我有一张可能的材料和相关质量的表格:密度、保护价值、每单位重量的成本、可用性等。关键的是,其中一列是“有效的构造方法”,这个单元格包含一个逗号分隔的 -字符串列表。用户使用带有验证下拉菜单的单元格选择其中一种材料(这部分工作正常)。

我需要第二个下拉菜单来显示可用于从第一个下拉菜单中选择的材料的有效构造方法。我可以使用构造方法表中的名称列作为验证限制来显示所有构造方法,但我只想要有效的。

因此,例如,如果用户选择“铁,手工锻造”,他们不应该选择“绗缝”或“倾斜分层” - 这些选项仅适用于类似织物的柔性材料。反之,如果他们选择“亚麻”,他们不应该有能力选择“铰接板”——这对亚麻和其他织物来说是无意义的价值。

我可以在验证框中手动键入逗号分隔列表,并且下拉列表会正确生成,但我无法将验证框提供给包含逗号分隔列表的单个单元格的 VLOOKUP (=VLOOKUP(Material, MaterialTbl,7,False)),它抱怨源必须是分隔列表或对单个行或列的引用。

我还尝试将 VLOOKUP 放在一个单元格中,然后将验证框指向该单元格 (=$H$16),但我得到的只是一个包含整个列表、逗号和所有内容的选项。例如,我的列表包含一个选项:“邮件、分段板、刻度、板”,而不是四个选项:“邮件”、“分段板”、“刻度”、“板”。

有什么办法吗?

有没有办法在不使用 VBA 的情况下做到这一点? (如有必要,我将求助于 VBA,但我希望使用没有宏的电子表格,因为它更易于分发)。

【问题讨论】:

  • 数据验证不允许数组 AFAIK。您可能最好重新组织您的电子表格以允许动态命名范围(只需添加另一个工作表,或在某处定义每个材料的有效构造方法的隐藏表,按行/列排列。然后您可以创建一些动态命名范围以引用此表并在材质选择更改时返回适当的列表。support.microsoft.com/kb/830287
  • 如果我正确地遵循了文章(和教程),这将需要为每种材料类型指定一个命名范围 - 这将使向表中添加新材料有点挑战。跨度>
  • 糟糕——我刚刚找到this tutorial,它似乎很好地解决了每种材料类型需要一个静态命名范围的问题。
  • 现在如果我能弄清楚如何根据另一张表中的转置数据构建一个表...
  • 哎呀,我不能在表格中使用多单元格公式,我根本不能在表格标题中使用公式。 ://

标签: excel list validation conditional


【解决方案1】:

我仍然认为通过创建一个表格和一个定义的动态范围来关闭这个表格是最好的。

如有必要,您可以将其放在隐藏的工作表中。

我将在工作表中定义两个命名范围。 TableRange 将引用整个表格,ListRange 将是一个单独的 1 列范围,根据您在下拉菜单中的选择是动态的。

使用一些公式(可能会变得复杂)和动态范围,很容易使您的下拉列表彼此“相关”。

https://docs.google.com/file/d/0B1v0s8ldwHRYMUpQRmluVzRkcnM/edit?usp=sharing

Sheet1 解释了我如何设置命名范围

Sheet2 有示例下拉菜单,顶层链接到 Sheet1 上的单元格$A$1:$C$1,第二个下拉菜单链接到动态 ListRange

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多