使用INDIRECT在已关闭的Excel工作簿中引用值?

问题描述 投票:10回答:8

我想用另一个公式(不是VBA!)来引用另一个已关闭的工作簿中的单元格值。工作表名称存储为变量(在以下示例中,C13是“Sheet2”)。

如果另一个文件是打开的,那么以下工作:

=INDIRECT("[myExcelFile.xlsm]" & C13 & "!$A$1")

如果文件已关闭,则上述公式不起作用,因为没有给出绝对路径。但我得到了以下工作(注意'而不是':

='C:\data\[myExcelFile.xlsm]Sheet2'!$A$1

现在我想用动态引用值替换硬编码的“Sheet2”,意思是C13(如第一个代码片段所示)。

有没有人知道不使用VBA或其他库的解决方案?

excel excel-formula
8个回答
10
投票

确切地说,no way to do this标准配方。然而,一个疯狂的答案可以找到here。它仍然避免使用VBA,它将允许您动态获取结果。

  1. 首先,制作将生成您的公式的公式,但不要在开头添加=
  2. 让我们假设您已经在B2的单元格Sheet1中创建了此公式,并且您希望在c列中计算公式。
  3. 现在,转到“公式”选项卡,然后选择“定义名称”。给它命名为myResult(或你选择的任何东西),并在Refer To下,写=evaluate(Sheet1!$B2)(注意$
  4. 最后,去C2,写下=myResult。向下拖,然后......瞧!

0
投票

检查INDEX功能:

=INDEX('C:\path\[file.xlsm]Sheet1'!A10:B20;1;1)

0
投票

= INDIRECT( “ 'C:\数据[ ”&A8&“] SHEETNAME'!$ G9”)

其中A8包含myExcelFile.xlsm

和G9包含您的源工作簿珍贵数据。


0
投票

我也在寻找在封闭的工作簿中引用单元格的答案。以下是解决方案(正确公式)的链接。我已经在我当前的项目上尝试过它(引用一个单元格和一组单元格)并且它运行良好而没有错误。我希望它对你有所帮助。

https://www.extendoffice.com/documents/excel/4226-excel-reference-unopened-file.html

在公式中,E:\Excel file\是未打开的工作簿的完整文件路径,test.xlsx是工作簿的名称,Sheet2是包含您需要引用的单元格值的工作表名称,而A:A,2,1表示将在引用的单元格中引用A2。关闭的工作簿。您可以根据自己的需要进行更改。

如果要手动选择要引用的工作表,请使用此公式

=INDEX('E:\Excel file\[test.xlsx]sheetname'!A:A,2,1)

应用此公式后,您将看到“选择工作表”对话框,请选择工作表,然后单击“确定”按钮。然后将立即引用此工作表的特定单元格值。


0
投票

至少在Excel 2016中,您可以将INDIRECT与完整路径引用一起使用;整个参考(包括表格名称)需要用'字符括起来。

所以这对你有用:

= INDIRECT("'C:\data\[myExcelFile.xlsm]" & C13 & "'!$A$1")

注意最后一个字符串中的结束'(即'!$A$1包围的""


0
投票

问题是指向已关闭文件的链接与索引一起使用(但不与索引一起使用(间接(

在我看来,它是索引函数的编程问题。我用if子句行解决了它

C2=sheetname
if(c2=Sheet1,index(sheet1....),if(C2="Sheet2",index(sheet2....

我做了五张,它是一个很长的公式,但做我需要的。


-1
投票

如果您知道要引用的工作表数量,可以使用以下功能查找名称。比你可以在INDIRECT函数中使用它。

Public Function GETSHEETNAME(address As String, Optional SheetNumber As Integer = 1) As String

    Set WS = GetObject(address).Worksheets
    GETSHEETNAME = WS(SheetNumber).Name

End Function

此解决方案不需要打开引用的工作簿 - Excel将自行打开它(但它将被隐藏)。


-1
投票

好,

这是Office 2010上的恐龙方法。

使用连接编写所需的完整地址(组合文本的“&”方法)。

为您需要的所有地址执行此操作。它应该看起来像:

=“=”&“'\ FULL NETWORK ADDRESS包括[电子表格名称]”&W3&“'!$ w4”

W3是我正在使用的工作表的动态参考,W4是我想从工作表中获取的单元格。

完成后,启动宏录制会话。复制单元格并将其粘贴到另一个单元格中我将它粘贴到一个合并的单元格中,它给了我经典的“相同大小”错误。但它做的一件事是从我的连接中粘贴结果文本(包括额外的“=”)。

复制你为此做的很多。然后,进入每个粘贴的单元格,选择他的文本,然后按Enter键。它将其更新为有效的直接参考。

完成后,将光标放在好处并停止宏。将其分配给按钮即可完成。

这是第一次做这件事的PITA,但是一旦你完成了它,你刚刚制作了方形钉,适合圆孔。

© www.soinside.com 2019 - 2024. All rights reserved.