根据单元格值

时间:2017-05-05 16:46:57

标签: excel vba excel-vba

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

在这种情况下,源单元格将更新'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

非常感谢任何帮助或参考!

3 个答案:

答案 0 :(得分:1)

让我们说单元格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引用设为绝对值。

答案 1 :(得分: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)"

答案 2 :(得分:0)

与其他人的建议类似,但有两处变化。 1)不要直接在公式中引用Cell,而是在其外部定义您想要的内容。这样,如果你决定从Cell 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)"