依赖级联下拉列表
Dependant-Cascading drop down list
我在依赖下拉列表方面遇到了问题。我已经设置了 table 的数据(工作表 1):
A | B | C
1 Manager | Cashier | Driver
2 Joe | Sarah | Tom
3 Sophie | James | Anthony
我有 2 个范围:
1) 表示 table name = RoleTable
2) $A$1:$C$1 = RoleHeaders
在 Sheet2 中,我将一个单元格 ($A1) 设置为范围 "Role",我现在将数据验证放在同一个单元格 =RoleHeaders 作为列表)(下拉)。
我设置了另一个Range = 'RoleName'并设置了以下公式:
RoleName=INDEX(RoleTable,,MATCH(Role,RoleHeaders,0))
我已将 B2=RoleName。现在当我只有一个角色列表时这工作正常,但是一旦我将验证插入单元格 A2,因为角色 = A1 依赖列表将不起作用并且基于 A1 中的值。
我在网上搜索了很多不同的方法...有没有简单的方法来编辑我当前的论坛或设置?
谢谢!
尝试将 sheet 名称添加到您的名称范围。
将您的 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)
您应该能够通过公式功能区上的名称管理器完成所有这些操作。
我刚刚看到您试图使其动态化的部分。您可以将偏移公式中的 2 替换为 CountA(C:C)。我现在的问题是,当您处理列数时,我正在尝试弄清楚如何生成 select 整个列引用。
您可以使用间接和 CHR() 来完成,但我希望有更清晰的东西...仍然需要查看地址公式。
更新
这是我的名称管理器的屏幕截图,注意我正在测试 sheet6 上的数据并从 sheet7 调用。这应该与您的 sheet1 和 sheet 2
相同
这是截止偏移量公式的副本。 If 应该与上面的相同,除了它引用 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,因此您可以添加另一个计数。对于第 E:E 列的第 5 个选项,我似乎使用了 count 而不是 counta。我刚刚在发布的版本中更正了这一点。
这是我在 sheet6 上的测试数据,也就是你的 sheet1:
这是在 sheet7(您的 sheet2)单元格 A1 中选择角色的图像。请注意单元格中没有公式。
我们在这里看到您依赖的动态下拉列表仅显示 2 个条目。
在这里我们可以看到列表已经扩展以在驱动程序列表中添加一个名称。
我在依赖下拉列表方面遇到了问题。我已经设置了 table 的数据(工作表 1):
A | B | C
1 Manager | Cashier | Driver
2 Joe | Sarah | Tom
3 Sophie | James | Anthony
我有 2 个范围:
1) 表示 table name = RoleTable
2) $A$1:$C$1 = RoleHeaders
在 Sheet2 中,我将一个单元格 ($A1) 设置为范围 "Role",我现在将数据验证放在同一个单元格 =RoleHeaders 作为列表)(下拉)。
我设置了另一个Range = 'RoleName'并设置了以下公式:
RoleName=INDEX(RoleTable,,MATCH(Role,RoleHeaders,0))
我已将 B2=RoleName。现在当我只有一个角色列表时这工作正常,但是一旦我将验证插入单元格 A2,因为角色 = A1 依赖列表将不起作用并且基于 A1 中的值。
我在网上搜索了很多不同的方法...有没有简单的方法来编辑我当前的论坛或设置?
谢谢!
尝试将 sheet 名称添加到您的名称范围。
将您的 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)
您应该能够通过公式功能区上的名称管理器完成所有这些操作。
我刚刚看到您试图使其动态化的部分。您可以将偏移公式中的 2 替换为 CountA(C:C)。我现在的问题是,当您处理列数时,我正在尝试弄清楚如何生成 select 整个列引用。
您可以使用间接和 CHR() 来完成,但我希望有更清晰的东西...仍然需要查看地址公式。
更新
这是我的名称管理器的屏幕截图,注意我正在测试 sheet6 上的数据并从 sheet7 调用。这应该与您的 sheet1 和 sheet 2
相同这是截止偏移量公式的副本。 If 应该与上面的相同,除了它引用 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,因此您可以添加另一个计数。对于第 E:E 列的第 5 个选项,我似乎使用了 count 而不是 counta。我刚刚在发布的版本中更正了这一点。
这是我在 sheet6 上的测试数据,也就是你的 sheet1:
这是在 sheet7(您的 sheet2)单元格 A1 中选择角色的图像。请注意单元格中没有公式。
我们在这里看到您依赖的动态下拉列表仅显示 2 个条目。
在这里我们可以看到列表已经扩展以在驱动程序列表中添加一个名称。