将多个名称列表添加到 Excel 中的条件下拉列表

Adding Multiple Name Lists to Conditional Dropdown in Excel

我正在创建一个电子表格,其中的下拉菜单包含基于多个单元格的内容,并根据这些条件添加不同的内容。在过去的一个小时里,我一直在寻找在线的东西(在这里,Google,等等),要么我一直在寻找正确的东西,要么之前没有人想过尝试,但要么好的,我们开始吧:

要点是,在数据验证中,命名组的引用似乎只是单数,但我希望能够根据可用内容将多个命名组添加到单个下拉列表中。例如,一个下拉框 (D1) 可以具有基于两个单元格(A1、A2)的值,并且两者本身都是下拉列表。如果 A1 和 A2 都说应该在 D1 的列表中显示某些内容,我希望两者都显示(按照我检查单元格的顺序指定的顺序)。 Excel 甚至可以做到这一点吗?如果可以,我该怎么做?

我有可能做到这一点:

  1. 在这种情况下,我在 D 和 E 列中列出了项目:

    D 列包含字母 A、B、C、D
    E 列包含 E、G、H、I

    值可以是您需要的值。

  2. 然后我使用数据验证在单元格 B1 中制作了一个下拉列表 -> 列表引用 D 列中的列表

  3. 然后我使用数据验证在单元格 C1 中创建了一个下拉列表 -> 列表引用 E 列中的列表

  4. 我然后使用数据验证在单元格 A1 中制作了一个下拉列表 -> 引用 B1 和 C1 中的下拉列表的列表

这会根据 B1 和 C1 中的选定值动态更改 A1 中的下拉列表

在下图中,我选择了 B 和 H,这将单元格 A1 中的列表更改为具有选项 B 和 H。

哇,伙计,这真是一个挑战,我非常喜欢这个!抱歉,第一个答案不是您需要的,但这应该可以!

所以首先我设置 sheet 如下:

然后我使用数据验证为选项 1 和 2 添加了 True 和 False 条件

然后我在 H 列中输入公式以根据选择创建一个新列表

=IF($A=TRUE,E2,"")  
=IF($A=TRUE,E3,"")  
=IF($A=TRUE,E4,"")  
=IF($A=TRUE,E5,"")  
=IF($A=TRUE,E6,"")  
=IF($B=TRUE,F2,"")  
=IF($B=TRUE,F3,"")  
=IF($B=TRUE,F4,"")  
=IF($B=TRUE,F5,"")  
=IF($B=TRUE,F6,"")  

因此对于前 5 个公式,如果选择 A2 为 True,那么它会将列表 1 中的适当项目显示到动态列表中。

对于最后 5 个公式,如果选择 B2 为真,那么它会将列表 2 中的适当项目显示到动态列表中

例如:

如果 A2 = True & B2 = False

如果 A2 = 假 & B2 = 真

此时我意识到动态列表中的空格会是个问题所以我不得不创建一个 ARRAY 来删除空格。网上有很多例子可以做到这一点,但这是最简单的公式。 (我无法解释 ARRAY 公式,我偶尔会用到它们,但没有完全理解它们,对此我感到抱歉)

在 I2 中我放置了以下 ARRAY 公式(I2 上方的单元格必须保留为空白)

=INDEX($H:$H, MATCH(0, IF(ISBLANK($H:$H), 1, COUNTIF(I1:$I, $H:$H)), 0))

然后必须在输入公式后按CTRL + SHIFT + ENTER使其成为数组公式

然后使用自动填充将公式向下拖动到 I11

然后在 C2 中,我使用数据验证和 OFFSET 公式创建了一个动态下拉列表,以引用索引列表中包含的有效文本项(此处解释了 OFFSET 公式 http://www.ozgrid.com/Excel/DynamicRanges.htm

公式为:

=OFFSET($I,0,0,MATCH("*",$I:$I,-1),1)

在 C2 的数据验证的源字段中使用了 OFFSET 公式

现在您在 C2 中的列表是动态的,基于 A2 和 B2 中的选择

例如:

A2 和 B2 = 假

A2 = 真,B2 = 假

A2 = 正确且 B2 = 正确

A2 = 假且 B2 = 真

可能还有另一种方法可以用 VBA 来做到这一点(我不太擅长),但现在应该可以了!希望这能解决您的问题!