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如下所示的范围。
OFFSET
function允许根据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它。