动态级联下拉菜单在Microsoft Excel 2010(走走INDIRECT()的问题)
|级联从属下拉框是一个有趣且常见的技巧,它允许第二个下拉列表根据在第一个下拉框中所做的选择来更改其选项。通常使用INDIRECT()函数来完成此操作。
另一个常见的技巧是使用“动态命名范围”公式来创建命名范围,这些命名范围会在您向列中添加项目时自行调整。很有用。
问题:*这两个“技巧”不能同时使用。如果使用动态命名范围公式创建团队列表,然后使用该命名范围作为单元格A1中DV列表的来源,则不能使用INDIRECT(A1)方法选择具有相同名称的从属命名范围作为A1中的选定文本。
解决方案:*然后,解决方法是完全不创建动态的命名范围公式。而是将所有动态活动移到“从属数据验证”“源”公式中。
设置:
1.在“名册”工作表上,所有列表将并排放置在列中,如下设置:
{空} 2。我们通过单击A1并在名称框中键入该名称来创建一个名为AnchorCell的命名范围,如上所示。
这使我们可以在以后创建仍可在Excel 2003上使用的数据验证公式。 3.我们通过按CTRL-F3并使用RefersTo公式定义名称来创建一个名为Teams的动态命名范围:
= OFFSET(Rosters!$ A $ 1,,,1,COUNTA(Rosters!$ 1:$ 1))
这使您可以随时添加新列(团队),而无需进行任何其他更改,它们都将继续工作,并包括您的新团队。
注意:没有空白列,这是参考表,请保持整洁。
{空} 4。接下来,这里没什么好想的,我们使用名为rangeTeams的列表源作为Selection *工作表上列A的主要数据验证:
一旦应用,它将提供我们“名册”工作表第1行的球队名单:
{空} 5。这就是魔术。 B2中的数据验证列表公式执行所有繁重的工作,使用OFFSET()和MATCH函数在theRosters * sheet的row1上找到在A列中选择的团队,然后仅创建该列中的项目的下拉列表。在B2中,DV公式为:
OFFSET(AnchorCell,1,MATCH($ A2,Teams,0)-1,COUNTA(OFFSET(AnchorCell,,MATCH($ A2,Teams,0)-1,50,1))-1,1)您应该花一些时间阅读有关偏移量的帮助文件,以便使参数对您有意义:
= OFFSET(参考,行,列,[高度],[宽度])
{空} 6。一旦应用,辅助列表将根据在A列单元格中所做的选择来创建自己: