Excel公式如何连接字符串以供外部引用

Excel公式如何连接字符串以供外部引用,excel,excel-formula,Excel,Excel Formula,假设我在一个单元格中有以下公式,它从另一本工作手册中读取一个单元格的值 ='c:\temp\[external book.xlsx]SheetX'!$E$4 我希望c:\temp\[external book.xlsx]SheetX的值来自此表中的另一个单元格。如何重写此公式以连接此值和“!$E$4” 假设单元格A1包含c:\temp\[external book.xlsx]SheetX编辑:由于以下内容在封闭的工作簿上不起作用,下面是一个笨拙的概念证明,说明了如何使用VBA(我想有更好的方法

假设我在一个单元格中有以下公式,它从另一本工作手册中读取一个单元格的值

='c:\temp\[external book.xlsx]SheetX'!$E$4
我希望
c:\temp\[external book.xlsx]SheetX
的值来自此表中的另一个单元格。如何重写此公式以连接此值和
“!$E$4”


假设单元格
A1
包含
c:\temp\[external book.xlsx]SheetX

编辑:由于以下内容在封闭的工作簿上不起作用,下面是一个笨拙的概念证明,说明了如何使用VBA(我想有更好的方法可以做到这一点):

Sub-ClosedWorkbook()
作为工作表的Dim currSht
Dim targetWbk As工作簿
将路径设置为字符串
'关闭更新
Application.ScreenUpdating=False
'设置对当前工作表的引用
设置currSht=ActiveWorkbook.ActiveSheet
'获取公式单元格中的值(此处为A1,如果在循环中,则可能为ActiveCell,等等)
路径表=当前范围(“A1”)值
“分开这条路——这很笨重,更像是概念的证明
'这取决于您提到的路径,并且IF块是
'检查单元格中是否存在撇号(因为它是转义字符,
'它通常被跳过)
如果左侧(路径表,1)=“'”则
路径=替换(中间(路径表,2,指令(路径表,“]”)-2),“[”,“”)
图纸=中间(路径图纸,仪表(路径图纸“]”)
板材=左侧(板材,透镜(板材)-2)
其他的
路径=替换(Mid(路径表,1,指令(路径表,“]”)-1),“[”,“”)
图纸=中间(路径图纸,仪表(路径图纸“]”+1)
板材=左侧(板材,透镜(板材)-2)
如果结束
'打开目标工作簿
设置targetWbk=工作簿。打开(路径)
'从E4中获取值并将其放入单元格中(这里的D1可以是ActiveCell,等等)
MyValue=TargetWebK.Sheets(Sheet).Range(“E4”).Value
当前范围(“D5”)。值=MyValue
"接近目标"
targetWbk,关闭
Application.ScreenUpdating=True
端接头

旧方法(不适用于关闭的工作簿)

我相信这就是你想要的。在本例中,单元格
A1
具有我的工作表路径:

'C:\temp\[externalworkbook.xlsx]Sheet1'!
在B1单元中,我有以下公式:

=INDIRECT(A1 & "$E$4")
它将图纸值与
$E$4
连接,以生成完整路径,然后通过
间接
将其转换为值。需要注意的一点是:撇号是转义字符,因此根据您的数据,您可能需要在公式中特别说明:

=INDIRECT("'" & A1 & "$E$4")
如果您使用的是Excel 2007或更高版本,您可以将其包装在
IFERROR
公式中以排除猜测:

=IFERROR(INDIRECT(A1 & "$E$4"),INDIRECT("'" & A1 & "$E$4"))

@PreetSangha是的,我想把它扔进去。如果外部工作簿(a)关闭或(b)在Excel的其他实例中打开,则间接工作簿不起作用。谢谢unforturnetly@PreetSanghaVBA是一种选择吗?另外,我会在这篇文章中添加
excel
标签-有比我好得多的人,他们可能会有更好的想法。当然,如果这是唯一的方法,那么我会happy@PreetSangha好的,现在把一个样本放进去。绝对不是骄傲,更多的是一个概念的证明。依赖于打开/关闭目标书,所以希望它适合您的用例。如果它符合您的原因,很乐意帮助充实它/使其更具动态性。是否可以将其作为Excel函数编写,该函数可以从单元格中调用,其中A1=间接_2(A2)的单元格公式和A2='c:\temp[external book.xlsx]SheetX'的值$E$4