Excel:下拉列表依赖于其他下拉列表

我想要在Excel中以下内容:

相邻单元格中的两个下拉列表:

下拉列表#1 | 下拉列表#1

Dropdown list 1: One Two Three 

如果我在第一个单元格中selectOne,则第二个单元格中的列表应包含以下选项:

 One:<br/> 1.1<br/> 1.2<br/> 1.3 

如果我在第一个单元格中select“两”,则第二个单元格中的列表应包含以下选项:

 Two:<br/> 2.1<br/> 2.2 

等等。 有很多教程,但我有一些麻烦搞清楚其中哪些解决这个确切的问题。

更新:一个例子。 selectf.ex. 组1标题(栏A)下,组1栏右侧(栏D)列出的条目应出现在项目标题(栏B)下。 而其他小组也一样。

在这里输入图像说明

按照承诺更新:

当您使用List进行validation时,您必须input如下所示的范围。

Excel2

OFFSETfunction允许根据input条件dynamic设置范围。

如果你考虑这个:

 =OFFSET(C1,0,0,1,1) 
  • 参数1 =锚小区
  • 参数2 =要移动的行数,在这里可以使用负数将行向上移动,使正数向下移动
  • 参数3 =移动的列数。 负面的,是正确的。
  • 参数4 =范围的高度(不能为负数,可选,默认为1)
  • 参数5 =范围的宽度(不能是负数,是可选的,默认值是1)

在这种情况下,返回的范围将为C1因为我们没有行或列偏移量,高度和宽度设置为1

MATCH函数将返回值的出现位置的索引(范围必须是1个单元格宽或1个单元格高)

细胞筛选

基于上面的屏幕print =MATCH("Group2",D1:F1,0)将返回2,因为“Group2”出现在D1:F1范围内的第二个单元格中。 (“组1”将返回1,“组3”将返回3,并且“组4”将返回#N / A,因为它不存在)。

所以基于此,我们可以将MATCH函数作为OFFSET函数中的第二个参数,并select匹配MATCH函数中第一个参数的列。

=OFFSET(C1,0,MATCH("Group2",D1:F1,0),1,1)将返回范围E1因为我们已经将C1从列C1移动了两列

=OFFSET(C1,1,MATCH("Group2",D1:F1,0),3,1)现在将返回E2:E4因为我们将范围的高度增加到3,行偏移增加到1。

最后,我们可以将MATCH函数中的“Group2”值更改为单元格值,这意味着该范围将dynamic更改。

这里我已经使用了单元格A2 =OFFSET(C1,1,MATCH(A2,D1:F1,0),3,1)所以无论单元格A2值是用来抵消范围的。

最后要做的是把dynamic范围放到validation中(我用过B2

验证示例

这将dynamic设置validation范围。

验证范围

当我使用带有多个参数的OFFSET函数时,我不确定它是否返回正确的范围,我写了一个小帮手User Defined Function,我只是把它放在一个VBA模块中。

 Public Function GetAddress(rng As Range) As String GetAddress = rng.Address End Function 

这可以让我把偏移公式,并将返回范围地址。 所以我可以确定它是正确的。

获取地址示例

可能有一个内置函数,但我从来没有find它。