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

Chr*_*ris 10 excel excel-formula

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

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

=INDIRECT("[myExcelFile.xlsm]" & C13 & "!$A$1")
Run Code Online (Sandbox Code Playgroud)

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

='C:\data\[myExcelFile.xlsm]Sheet2'!$A$1
Run Code Online (Sandbox Code Playgroud)

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

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

Ben*_* I. 10

使用标准公式绝对没有办法做到这一点.但是,这里可以找到一种疯狂的答案.它仍然避免使用VBA,它将允许您动态获取结果.

  1. 首先,制作将生成您的公式的公式,但不要=在开头添加!

  2. 让我们假设您已在单元格B2中创建了此公式Sheet1,并且您希望在列中评估公式c.

  3. 现在,转到"公式"选项卡,然后选择"定义名称".给它起名字myResult(或你选择的任何东西),然后在参考下,写=evaluate(Sheet1!$B2) (注意$)

  4. 最后,去C2,写=myResult.向下拖,然后...... 瞧!

  • 感谢您的回答,+1。但是正如您已经在答案中添加的那样:这只给了我一个动态创建的公式。但我想复制整个工作表并将公式应用于这些 - 无需创建几个名称定义。为什么你确定(按设计),绝对没有其他方法? (2认同)
  • 我引用了为什么我如此明确以至于没有其他方式(缺少VBA),并且我删除了"按设计"(因为我没有参与Excel的设计 - "将文本评估为常规函数")只是似乎没有Excel的精神.我可能夸大了我的情况).此外,我找到了一个更好的答案,这导致了一个更有用,可拖动的功能.希望这能更好地满足您的需求! (2认同)
  • @Chris非常老的问题,但出于完整性考虑(此问题在搜索结果中弹出很高),并提供一种解决方法:/sf/answers/3743453171/ (2认同)
  • 使用 INDIRECT 公式对关闭的工作簿字符串引用也不起作用 (2认同)

小智 5

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

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)

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

  • 它是否也适用于变量工作表名称,这是核心问题之一? (3认同)