【问题标题】:excel dynamic name range is not workingexcel动态名称范围不起作用
【发布时间】:2016-05-23 15:36:19
【问题描述】:

我有两列,W和R。W是公司名称,R是公司的测试类型。它们在“列表”表中

当我在 W 列输入公司名称时,我可以选择 R 列中的列表,其中包含公司的测试类型。例如,如果我在 W3 中输入“Batman”,在单元格 R3 中,我可以选择“Batcar”、“Bat-shirt”。

公司的测试类型存储在另一个名为“蝙蝠侠”的工作表中,位于 D 列。它将根据数据库自动更新。当我在数据库中添加新的测试类型时,测试类型表的 D 列会自动刷新。

在“登录”中,在 R 列,我使用数据验证来生成列表,它指的是“=INDIRECT(List!$W2322)”。在名称管理器中,让“蝙蝠侠”为公司名称,名称范围为“=蝙蝠侠!$D:$D”

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

谁能帮帮我?

【问题讨论】:

  • 您需要使用INDIRECT() 包含动态命名范围的工作表名称。或者,您可以将范围设为真正的 Excel 表格,然后将范围命名为 =YourTableName[ColumnTitle]
  • 在显示列表的单元格中,我已经写了“=INDIRECT($W$2322)”。是你的意思吗?
  • 如果我把它做成excel表格,自动添加的新项目不会被视为新表格项目
  • 他的意思是=indirect('sheetname'!$W$2322)
  • 这个问题之前已经回答过了……见this on SOthis

标签: vba excel excel-formula formula


【解决方案1】:

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

=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 解决方案

【讨论】:

  • @HuiManChang:你熬过去了吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多