Dependent-Cascading下拉列表

时间:2016-04-20 12:29:41

标签: excel excel-formula cascadingdropdown

我在依赖下拉列表方面遇到了问题。我已经设置了一个数据表(sheet1):

       A    |    B    |   C
1   Manager | Cashier | Driver
2   Joe     | Sarah   | Tom
3   Sophie  | James   | Anthony

我有两个范围:
   1)表示表名= RoleTable
   2)$ A $ 1:$ C $ 1 = RoleHeaders

在Sheet2中我设置了一个单元格($ A1)作为范围“Role”,我现在已将数据验证放在同一个单元格= RoleHeaders作为列表)(下拉列表)。

我已设置另一个Range ='RoleName'并设置以下公式:

RoleName=INDEX(RoleTable,,MATCH(Role,RoleHeaders,0))

我做了B2 = RoleName。现在,当我只有一个角色列表时,这工作正常,但是一旦我将验证插入到单元格A2中,作为role = A1,依赖列表将不起作用,并且基于A1中的值。

我在网上搜索并看到了很多不同的方法来做这个...有一个简单的方法来编辑我当前的论坛或设置吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

尝试将工作表名称添加到您的名称范围。

将您的RoleTable从$ A $ 1:$ C $ 3更改为Sheet1!$ A $ 1

然后将索引公式更改为偏移公式

=OFFSET(RoleTable,1,MATCH(Role,RoleHeaders,0)-1,CHOOSE(MATCH(Role,RoleHeaders,0),COUNTA(Sheet1!$A:$A),COUNTA(Sheet1!$B:$B),COUNTA(Sheet1!$C:$C),COUNTA(Sheet1!$D:$D),COUNT(Sheet1!$E:$E))-1,1)

您应该可以通过公式功能区上的名称管理器完成所有操作。

我抓住了你试图让它变得动态的部分。您可以使用CountA(C:C)替换它,而不是偏移公式中的2。我现在的问题是我正在试图找出当你处理列数时如何生成选择整个列引用。

你可以用间接和CHR()来做,但我希望有更清洁的东西......仍然要看地址公式。

更新

这是我的名称管理器的屏幕截图,注意我正在使用sheet6上的数据进行测试并从sheet7进行调用。这应该与sheet1和sheet 2相同

Name Manager

这是截止偏移公式的副本。如果应该与上面的相同,除了引用sheet6而不是sheet1:

=OFFSET(RoleTable,1,MATCH(Role,RoleHeaders,0)-1,CHOOSE(MATCH(Role,RoleHeaders,0),COUNTA(Sheet6!$A:$A),COUNTA(Sheet6!$B:$B),COUNTA(Sheet6!$C:$C),COUNTA(Sheet6!$D:$D),COUNTA(Sheet6!$E:$E))-1,1)

这将处理最多5列源下拉项目。我认为选择限制为6,所以你可以添加另一个counta。似乎我在E列E的5选择中计算而不是counta。我刚刚在发布的版本中对此进行了更正。

这是我在sheet6上的测试数据,它将是你的sheet1: Test Data

这是在sheet7(你的sheet2)单元格A1中选择Role的图像。注意单元格中没有公式。

Role pict

在这里,我们看到您依赖动态下拉列表仅显示2个条目。

Manager pick

在这里,我们可以看到列表已经扩展,以便为驱动程序列表添加一个名称。

Driver Pick