【问题标题】:Dependant-Cascading drop down list依赖级联下拉列表
【发布时间】:2016-08-13 03:14:18
【问题描述】:

我遇到了与依赖下拉列表有关的问题。我已经建立了一个数据表(sheet1):

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

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

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

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

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

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

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

谢谢!

【问题讨论】:

  • 我不知道你有没有试过这个contextures.com/xlDataVal02.html我发现它很容易,我认为这正是你想要实现的目标
  • @DaniEl 谢谢,我使用过这种方法,但我希望动态列表会更有用......因为我可以在有问题的源表中添加和删除。
  • 我会考虑的,如果你不能早点找到答案。 @ForwardEd 可能会有所作为。
  • 我尝试在同一张纸上完成所有操作,但最终遇到了同样的问题。它根本不喜欢 index 命令!我确实注意到,如果我将索引公式放入单元格中,只要公式与数据位于同一行,它就会返回该行中的名称。如果我转身将它用作 CSE 的数组公式,我可以将它放在任何地方。

标签: excel excel-formula cascadingdropdown


【解决方案1】:

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

将您的 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 相同

这是截断偏移公式的副本。 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 个条目。

在这里我们可以看到列表已经扩展,可以将添加的名称添加到驱动程序列表中。

【讨论】:

  • 感谢您的努力!我将表格转换为范围并尝试使用偏移公式: =OFFSET(Sheet1!$A$1,1,0,COUNTA(Sheet1!$A:$A),1) ,但是当我尝试替换依赖下拉列表时出现错误“源当前评估为错误” - 但是公式实际上选择了正确的值...
  • 如果所有列的条目数相同,count(A:A) 方法就很棒。
  • 您要处理的列数是否有限?如果是这样,您可以将您的匹配组合成一个选择,然后将每个选择选项设为 counta(A:A)、Count(B:B)、Count(C:C)。我认为您可以选择的数量是有限的。
  • 限制为 5 列
  • ok 我添加了选择方法来自动计算相应列的行数。限制,当前设置为在 sheet1 的前 5 列中 5 列彼此并排。如果 5 列向右移动,但只要它们保持在一起,就需要稍作调整。
猜你喜欢
  • 2016-04-05
  • 1970-01-01
  • 1970-01-01
  • 2015-02-25
  • 2015-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多