1

我想要 Excel 中的以下内容:

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

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

Dropdown list 1:
One
Two
Three

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

One:  
1.1  
1.2  
1.3

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

Two:  
2.1  
2.2
2.3

等等。周围有很多教程,但是我很难弄清楚其中哪些可以解决这个确切的问题。

更新:一个例子。选择 f.ex. 时 组标题下的第 1 组(A 栏),右侧第 1 组(D 栏)下列出的条目应出现在项目标题(B 栏)下。其他组也是如此。

在此处输入图像描述

4

2 回答 2

3

按承诺更新:

当您使用列表进行验证时,您必须输入一个范围,如下所示。

Excel2

OFFSET函数允许根据其输入标准动态设置范围。

如果你考虑这个:

=OFFSET(C1,0,0,1,1)
  • 参数 1 = 锚单元
  • 参数 2 = 要移动的行数,您可以在此处使用负数向上移动行,使用正数向下移动
  • 参数 3 = 要移动的列数。左边是负极,右边是正极。
  • 参数 4 = 范围的高度(不能为负数,可选,默认为 1)
  • 参数 5 = 范围的宽度(不能为负数,可选,默认为 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

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

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

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

在这里,我使用了 Cell 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

这允许我输入偏移公式,它会返回范围地址。所以我可以确保它是正确的。

获取地址示例

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

于 2013-11-13T14:45:48.043 回答
0

此解决方案避免使用 volatileOFFSET函数。

对于Validation位于A2使用此公式的第一个数据:

=$D$1:$F$1

对于Validation位于B2使用此公式的第二个数据:

= INDEX( $D$2:$F$4, 0, MATCH( $A$2, $D$1:$F$1, 0 ) )

第二个公式使用从数据Validation中选择的值A2MATCH相应的列中D1:F1,并将列号应用于INDEX函数以返回 range 中的整个列D2:F4

在此处输入图像描述

该函数通过分别输入 0 作为or来INDEX( reference, row number, column number )返回整个columnor 。rowreferencerow numbercolumn number

于 2019-12-23T17:11:50.450 回答