如何修复#VALUE! 当UDF引用另一个工作簿时
我在工作簿的Module1
中定义了一个如下所示的函数:
Function Header(r As Range) As String For i = 1 To r.Row If r.Offset(-i, -1).Value = "" Then Header = r.Offset(-i).Value Exit For End If Next End Function
我用另一个工作簿的单元格的引用来调用它:
=Header('[OtherWorkbook.xlsx]Sheet1'!C34)
而我得到的是#VALUE!
…直到我打开另一本工作簿,在这一点上神奇的价值出现。
如何强制电子表格从其他工作簿中获取值,即使它不是打开的?
指定closures的Excel工作簿的完整path应该做的伎俩。
代替
=Header('[OtherWorkbook.xlsx]Sheet1'!C34)
尝试
=Header('C:\Users\your_username\Desktop\[OtherWorkbook.xlsx]Sheet1'!C34)
将上面的pathreplace为已closures的工作簿的path。
所以答案是:这是做不到的。 要获取值,打开工作簿是必需的。
上面提供了@omegastripes的替代方法,虽然看起来相当复杂:
如何从Excel工作簿中选取值并在活动工作簿上按function返回