除非源工作簿已打开,否则Excel链接不起作用?

我有一个主工作簿,看起来像这样: 在这里输入图像说明

我对所有员工都有个别的说法:

SR声明

我有我的所有dynamic命名范围在Master工作表上工作正常,都看起来不错。

现在我注意到,如果我closures工作簿,那么数据应该是高亮显示的区域,都转向#REF erros …

所有的公式来拉动数据是这样的,当工作簿打开时

=INDEX('Staff Rewards Master.xls'!BenefitsData,MATCH(FirstName & " " & Surname,'Staff Rewards Master.xls'!Employees,0),MATCH(A:A,'Staff Rewards Master.xls'!BenefitNames,0)) 

当Source或Master工作簿closures时,公式(自然地)变成这个:

 =INDEX('C:\vss\Staff Rewards Statements\Staff Rewards Master.xls'!BenefitsData,MATCH(FirstName & " " & Surname,'C:\vss\Staff Rewards Statements\Staff Rewards Master.xls'!Employees,0),MATCH(A10,'C:\vss\Staff Rewards Statements\Staff Rewards Master.xls'!BenefitNames,0))] 

顺便说一句,如果我把它复制到运行对话框(从上面的path),该文件在Excel中打开没有问题:

C:\ vss \ Staff Rewards Statements \ Staff Rewards Master.xls

如果在closures源主工作簿之后计算“报表”,则会显示以下错误消息:

名称参考错误

现在,我应该提到,如果我删除了定义的名称 ,只是在单元格引用它工作正常,但为什么我的dynamic命名范围不能工作?

例如,这没有问题:

 =INDEX('O:\Dev\Staff Rewards Statements\[Staff Rewards Master.xls]Staff Benefits Master'!$B$7:$K$150,MATCH(FirstName & " " & Surname,'O:\Dev\Staff Rewards Statements\[Staff Rewards Master.xls]Staff Benefits Master'!$A$7:$A$150,0),MATCH(A10,'O:\Dev\Staff Rewards Statements\[Staff Rewards Master.xls]Staff Benefits Master'!$B$6:$T$6,0)) 

那么我在这里错过了什么或者做错了什么?

您不能使用名称来引用已closures的工作簿中的范围。

我猜(没有看到这本书),你可以用全列/整行引用replace你的命名引用(因为匹配不会触发空白)。 这将解决您的需求,不会造成速度问题。

HTH

INDEX函数可能是不稳定的,取决于你正在使用的excel的版本,它可能有直接或间接的依赖。 (来源: http : //www.decisionmodels.com/calcsecretsi.htm )。

无论如何,后果要么是重新计算结果。 如果在这种情况下重新计算结果,可能需要打开excel文件。

ME我使用相同types的目录作为你的非易失性函数,我没有问题(办公室2016)。 即使更新结果,每次打开文件,一切都会更新。

答复迟了,并用2016年365回答,但…外部参考在外部工作簿中工作,即使他们被closures。 您所得到的错误是指示外部命名引用引用表的位置,例如:“= Table1 [Employee]”。 这不行!

什么工作就是closures了Excel设置/选项/公式/'在公式中使用表名'。 外部命名范围将需要删除,并closures此设置重新设置。 所以新命名的范围就像“= worksheet1!$ D $ 4:$ D $ 100”。 当您增加表格的大小时,您可能希望看到范围如何扩展。

您仍然可能会收到错误,但会从#ref更改为#value。 如果尝试使用具有外部定义的命名范围的OFFSET,则仍然会导致错误 – 如上所示,我认为这与任何公式的volatile性质有关。

Brian Barrett