Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 基于单元格值更新文件路径_Vba_Excel - Fatal编程技术网

Vba 基于单元格值更新文件路径

Vba 基于单元格值更新文件路径,vba,excel,Vba,Excel,我试着把一个公式复制粘贴到一定范围的单元格中。我的公式(如下所示)需要根据源工作簿中单元格的内容进行更新。在某些上下文中,下面的宏所在的excel文件由源工作簿(其中包含源单元格内容)中的宏打开 在这种情况下,源单元格将更新“2017年5月” Sub PullPUProj() Range("D18:D104").Formula = "=IFERROR(OFFSET('[Athens_OperatingProjection_May2017.xlsx]Budget Detail'!$A$7,MAT

我试着把一个公式复制粘贴到一定范围的单元格中。我的公式(如下所示)需要根据源工作簿中单元格的内容进行更新。在某些上下文中,下面的宏所在的excel文件由源工作簿(其中包含源单元格内容)中的宏打开

在这种情况下,源单元格将更新“2017年5月”

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”的文本。您可以通过关闭、
并添加
&[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
的引用,则可能需要将
A1
引用设为绝对引用(因此
$A$1
)。

假设单元格A1具有字符串,则可以尝试此操作

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)"

与其他人的建议类似,但有两个变化。 1) 与其直接在公式中引用单元格,不如定义您想要的单元格外部内容。这样,如果您决定将其从单元格A1中移出,则只需更新一个部分。 2) 还包括工作表名称。如果宏可以从其他工作表执行,则可能会产生意外错误,因为它找不到需要的内容

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)"

它最终只是将文件引用缩短为“Athens\u OperatingProjection\uuuu.xlsx”哦,哎呀……我忘了把
范围(“A1”)
@JuanSebastianMedina@BruceWayne按照您构建它的方式,它需要间接函数。哦!我忘了放
Range(“A1”)
。这应该可以用于OP。