我想在Excel中使用以下内容:
相邻单元格中的两个下拉列表:
下拉列表#1 |下拉列表#1
Dropdown list 1:
One
Two
Three
如果我在第一个单元格中选择One,则第二个单元格中的列表应包含以下选项:
One:<br/>
1.1<br/>
1.2<br/>
1.3
如果我在第一个单元格中选择Two,则第二个单元格中的列表应包含以下选项:
Two:<br/>
2.1<br/>
2.2
等等。有很多教程,但我有一些麻烦搞清楚哪些解决了这个问题。
更新:一个例子。选择f.ex.时在集团标题(第A组)下的第1组,在第1组右侧(第D组)下列出的条目应出现在项目标题下(文字B)。其他小组也一样。
答案 0 :(得分:3)
按照承诺更新:
当您使用List进行验证时,您必须输入一个范围,如下所示。
OFFSET
功能允许根据输入条件动态设置范围。
如果你考虑这个:
=OFFSET(C1,0,0,1,1)
在这种情况下,返回的范围是C1
,因为我们没有行或列偏移,高度和宽度设置为1
MATCH
函数将返回一个值出现在一系列单元格中的索引(范围必须是1个单元格宽或1个单元格高)
根据以上屏幕打印=MATCH("Group2",D1:F1,0)
将返回2,因为“Group2”出现在D1:F1
范围内的第二个单元格中。 (“Group1”将返回1,“Group3”将返回3,“Group4”将返回#N / A,因为它不存在)。
基于此,我们可以将MATCH
函数作为OFFSET
函数中的第二个参数,并选择与MATCH
函数中第一个参数匹配的列。 / p>
=OFFSET(C1,0,MATCH("Group2",D1:F1,0),1,1)
会返回范围E1
,因为C1
MATCH
移了2
=OFFSET(C1,1,MATCH("Group2",D1:F1,0),3,1)
现在将返回E2:E4
,因为我们已将范围的高度增加到3,行偏移为1。
最后我们可以将MATCH
函数中的“Group2”值更改为一个单元格值,这意味着该范围将动态变化。
此处我使用了单元格A2
=OFFSET(C1,1,MATCH(A2,D1:F1,0),3,1)
,因此单元格A2
中的任何值都将用于抵消范围。
最后要做的是将动态范围放入验证中(我使用B2
)
这将动态设置验证范围。
当我使用带有多个参数的OFFSET
函数并且我不确定它是否返回正确的范围时,我写了一个小助手用户定义函数,我刚刚放入VBA模块。
Public Function GetAddress(rng As Range) As String
GetAddress = rng.Address
End Function
这允许我将偏移公式放入,它将返回范围地址。所以我可以确保它是正确的。
可能有内置功能,但我从未找到它。
答案 1 :(得分:0)
此解决方案避免使用易失性OFFSET
函数。
对于位于Validation
的第一个数据A2
,请使用以下公式:
=$D$1:$F$1
对于位于Validation
的第二个数据B2
,请使用以下公式:
= INDEX( $D$2:$F$4, 0, MATCH( $A$2, $D$1:$F$1, 0 ) )
第二个公式使用从Validation
中的数据A2
到MATCH
中相应列的D1:F1
中选择的值,并将列号应用于{{1} }函数返回范围INDEX
中的整个列。
函数D2:F4
通过输入0作为INDEX( reference, row number, column number )
或column
返回row
的整个reference
或row number