根据单元格值更新文件path

我正在尝试将公式复制并粘贴到特定范围的单元格中。 我拥有的公式(如下所示)需要根据源工作簿中的单元格内容进行更新。 在某些上下文中,下面的macros所在的excel文件是由源工作簿(源单元格内容所在的位置)的macros打开的。

在这种情况下,源单元格将更新“May2017”。

Sub PullPUProj() Range("D18:D104").Formula = "=IFERROR(OFFSET('[Athens_OperatingProjection_May2017.xlsx]Budget Detail'!$A$7,MATCH($A16,'[Athens_OperatingProjection_May2017.xlsx]Budget Detail'!$A$8:$A$284,0),MATCH('[Athens_OperatingProjection_May2017.xlsx]Budget Detail'!$BK$7,'[Athens_OperatingProjection_May2017.xlsx]Budget Detail'!$B$7:$CP$7,0)),0)" End Sub 

任何帮助或引用将不胜感激!

假设单元格A1具有要用来代替“May2017”的文本。 您可以通过closures""并添加& [variable] & "来重新打开公式来分割公式。

 Range("D18:D104").Formula = "=IFERROR(OFFSET('[Athens_OperatingProjection_" & A1 & ".xlsx]Budget Detail'!$A$7,MATCH($A16,'[Athens_OperatingProjection_" & A1 & ".xlsx]Budget Detail'!$A$8:$A$284,0),MATCH('[Athens_OperatingProjection_" & A1 & ".xlsx]Budget Detail'!$BK$7,'[Athens_OperatingProjection_" & A1 & ".xlsx]Budget Detail'!$B$7:$CP$7,0)),0)" 

注意:如果要拖动该公式,但保留对A1的引用(如$A$1 ),则可能需要将A1引用设置为绝对引用。

假设单元格A1有string,那么你可以试试这个…

 Range("D18:D104").Formula = "=IFERROR(OFFSET('[Athens_OperatingProjection_" & Range("A1").Value & ".xlsx]Budget Detail'!$A$7,MATCH($A16,'[Athens_OperatingProjection_" & Range("A1").Value & ".xlsx]Budget Detail'!$A$8:$A$284,0),MATCH('[Athens_OperatingProjection_" & Range("A1").Value & ".xlsx]Budget Detail'!$BK$7,'[Athens_OperatingProjection_" & Range("A1").Value & ".xlsx]Budget Detail'!$B$7:$CP$7,0)),0)" 

类似于其他人的build议,但有两个变化。 1)而不是直接在公式中引用单元格,定义你想要的外部。 这样,如果你决定把它从单元格A1,你只需要更新一个部分。 2)还包括表单名称。 如果macros可以从其他工作表执行,它可能会产生一个意外的错误,因为它不会find它所需要的。

 Month = Sheets("Budget Detail").Range("A1") Range("D18:D104").Formula = "=IFERROR(OFFSET('[Athens_OperatingProjection_" & Month & ".xlsx]Budget Detail'!$A$7,MATCH($A16,'[Athens_OperatingProjection_" & Month & ".xlsx]Budget Detail'!$A$8:$A$284,0),MATCH('[Athens_OperatingProjection_" & Month & ".xlsx]Budget Detail'!$BK$7,'[Athens_OperatingProjection_" & Month & ".xlsx]Budget Detail'!$B$7:$CP$7,0)),0)"