excel动态名称范围无效

时间:2016-05-23 03:04:27

标签: excel vba excel-vba excel-formula formula

我有两个栏目,W和R. W是公司名称,R是公司的测试类型。它们在表格中#34;列表"

当我在W栏输入公司名称时,我可以选择R列中的列表,该列具有公司的测试类型。例如,如果我键入"蝙蝠侠"在W3中,在R3单元格中,我可以选择" Batcar"," Bat-shirt"。

公司的测试类型存储在名为" Batman"的另一张表中,位于D列。它会根据数据库自动更新。当我在数据库中添加新的测试类型时,测试类型表的D列将自动刷新。

在"登录",在R栏,我使用数据验证来生成列表,它引用" = INDIRECT(List!$ W2322)"。在名称管理员中,让#34;蝙蝠侠"作为campany名称,名称范围将是" =蝙蝠侠!$ D:$ D"

但是在列表中,它会从如此多的空白开始。我希望列表从头开始,以D列中的最后一项结束,不再有空白。

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

将数据验证列表源更改为:

=OFFSET(INDIRECT(List!$W2322),MATCH(TRUE,INDEX(INDIRECT(List!$W2322)<>0,),0)-1,0,COUNTA(INDIRECT(List!$W2322)))

并让您的列表从引用列的第一个非空白单元格开始,并在其中包含与非空白单元格一样多的单元格后结束

因此您的非空白值必须是连续的

更加麻烦的是解决方案还限制列表下限到最后一个非空单元格:

=OFFSET(INDIRECT(List!$W2322),MATCH(TRUE,INDEX(INDIRECT(List!$W2322)<>0,),0)-1,0,MATCH(LOOKUP(2,1/(INDIRECT(List!$W2322)<>""),INDIRECT(List!$W2322)),INDIRECT(List!$W2322))-MATCH(TRUE,INDEX(INDIRECT(List!$W2322)<>0,),0)+1)

对于第一个公式,我利用来自here

的Raystafarian解决方案

对于第二个公式我也利用了来自here

的simoco解决方案