将多个名称列表添加到 Excel 中的条件下拉列表
Adding Multiple Name Lists to Conditional Dropdown in Excel
我正在创建一个电子表格,其中的下拉菜单包含基于多个单元格的内容,并根据这些条件添加不同的内容。在过去的一个小时里,我一直在寻找在线的东西(在这里,Google,等等),要么我一直在寻找正确的东西,要么之前没有人想过尝试,但要么好的,我们开始吧:
要点是,在数据验证中,命名组的引用似乎只是单数,但我希望能够根据可用内容将多个命名组添加到单个下拉列表中。例如,一个下拉框 (D1) 可以具有基于两个单元格(A1、A2)的值,并且两者本身都是下拉列表。如果 A1 和 A2 都说应该在 D1 的列表中显示某些内容,我希望两者都显示(按照我检查单元格的顺序指定的顺序)。 Excel 甚至可以做到这一点吗?如果可以,我该怎么做?
我有可能做到这一点:
在这种情况下,我在 D 和 E 列中列出了项目:
D 列包含字母 A、B、C、D
E 列包含 E、G、H、I
值可以是您需要的值。
然后我使用数据验证在单元格 B1 中制作了一个下拉列表 -> 列表引用 D 列中的列表
然后我使用数据验证在单元格 C1 中创建了一个下拉列表 -> 列表引用 E 列中的列表
我然后使用数据验证在单元格 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 来做到这一点(我不太擅长),但现在应该可以了!希望这能解决您的问题!
我正在创建一个电子表格,其中的下拉菜单包含基于多个单元格的内容,并根据这些条件添加不同的内容。在过去的一个小时里,我一直在寻找在线的东西(在这里,Google,等等),要么我一直在寻找正确的东西,要么之前没有人想过尝试,但要么好的,我们开始吧:
要点是,在数据验证中,命名组的引用似乎只是单数,但我希望能够根据可用内容将多个命名组添加到单个下拉列表中。例如,一个下拉框 (D1) 可以具有基于两个单元格(A1、A2)的值,并且两者本身都是下拉列表。如果 A1 和 A2 都说应该在 D1 的列表中显示某些内容,我希望两者都显示(按照我检查单元格的顺序指定的顺序)。 Excel 甚至可以做到这一点吗?如果可以,我该怎么做?
我有可能做到这一点:
在这种情况下,我在 D 和 E 列中列出了项目:
D 列包含字母 A、B、C、D
E 列包含 E、G、H、I值可以是您需要的值。
然后我使用数据验证在单元格 B1 中制作了一个下拉列表 -> 列表引用 D 列中的列表
然后我使用数据验证在单元格 C1 中创建了一个下拉列表 -> 列表引用 E 列中的列表
我然后使用数据验证在单元格 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 来做到这一点(我不太擅长),但现在应该可以了!希望这能解决您的问题!