Vba 基于单元格值更新文件路径
我试着把一个公式复制粘贴到一定范围的单元格中。我的公式(如下所示)需要根据源工作簿中单元格的内容进行更新。在某些上下文中,下面的宏所在的excel文件由源工作簿(其中包含源单元格内容)中的宏打开 在这种情况下,源单元格将更新“2017年5月”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
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。