我想在另一个 closed 工作簿中使用公式(不是VBA!)引用单元格值 . Sheet name is stored as a variable (在以下示例中,C13是"Sheet2") .
如果另一个文件是打开的,那么以下工作:
=INDIRECT("[myExcelFile.xlsm]" & C13 & "!$A$1")
如果文件已关闭,则上述公式不起作用,因为没有给出绝对路径 . 但我得到了以下工作(注意'而不是':
='C:\data\[myExcelFile.xlsm]Sheet2'!$A$1
现在我想用动态引用值替换硬编码的“Sheet2”,意思是C13(如第一个代码片段所示) .
有没有人知道不使用VBA或其他库的解决方案?
7 回答
确切地说no way to do this具有标准公式 . 但是,可以找到一个疯狂的答案here . 它仍然避免使用VBA,它将允许您动态获取结果 .
首先,制作将生成公式的公式,但不要在开头添加
=
!让我们假设您已在
Sheet1
的单元格B2
中创建了此公式,并且您希望在c
列中计算公式 .现在,转到“公式”选项卡,然后选择"Define Name" . 将其命名为
myResult
(或您选择的任何名称),并在“引用”下,写入=evaluate(Sheet1!$B2)
(注意$
)最后,转到
C2
,然后写入=myResult
. 向下拖,然后......瞧!检查INDEX功能:
至少在Excel 2016中,您可以将INDIRECT与完整路径引用一起使用;整个引用(包括表单名称)需要包含
'
个字符 .所以这对你有用:
注意在最后一个字符串中关闭
'
(即'!$A$1
被""
包围)= INDIRECT( “ 'C:\数据[ ”&A8&“] SHEETNAME'!$ G9”)
其中A8包含myExcelFile.xlsm
和G9包含您的源工作簿珍贵数据 .
如果您知道要引用的工作表数量,可以使用以下功能查找名称 . 比你可以在INDIRECT函数中使用它 .
此解决方案不需要打开引用的工作簿 - Excel将自行打开它(但它将被隐藏) .
我也在寻找在封闭的工作簿中引用单元格的答案 . 以下是解决方案(正确公式)的链接 . 我已经在我当前的项目上尝试过它(引用单个单元格和一组单元格)并且它运行良好而没有错误 . 我希望它对你有所帮助 .
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)
应用此公式后,您将看到“选择工作表”对话框,请选择工作表,然后单击“确定”按钮 . 然后将立即引用此工作表的特定单元格值 .
好,
这是Office 2010上的恐龙方法 .
使用连接编写所需的完整地址(组合文本的“&”方法) .
为您需要的所有地址执行此操作 . 它应该看起来像:
=“=”&“'\ FULL NETWORK ADDRESS包括[电子表格名称]”&W3&“'!$ w4”
W3是我正在使用的工作表的动态参考,W4是我想从工作表中获取的单元格 .
完成后,启动宏录制会话 . 复制单元格并将其粘贴到另一个单元格中我将它粘贴到一个合并的单元格中,它给了我经典的“相同大小”错误 . 但它做的一件事是从我的连接中粘贴结果文本(包括额外的“=”) .
复制你为此做的很多 . 然后,进入每个粘贴的单元格,选择他的文本,然后按Enter键 . 它将其更新为有效的直接参考 .
完成后,将光标放在好处并停止宏 . 将其分配给按钮即可完成 .
这是第一次做这件事的PITA,但是一旦你完成了它,你刚刚制作了方形钉,适合圆孔 .