【问题标题】:Update file path based on cell value根据单元格值更新文件路径
【发布时间】:2017-05-05 16:46:57
【问题描述】:

我正在尝试将公式复制并粘贴到特定范围的单元格中。我拥有的公式(如下所示)需要根据源工作簿中单元格的内容进行更新。在某些情况下,下面的宏所在的 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

任何帮助或参考将不胜感激!

【问题讨论】:

    标签: vba excel


    【解决方案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)。

    【讨论】:

    • 它最终只是缩短了对“Athens_OperatingProjection_.xlsx”的文件引用
    • 哦,哎呀......我忘了把Range("A1")@JuanSebastianMedina
    • @BruceWayne 你构造它的方式,它需要间接函数。
    【解决方案2】:

    假设单元格 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)"
    

    【讨论】:

    • 天啊!我忘了输入Range("A1")。这应该为 OP 做。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-04
      • 2017-05-17
      相关资源
      最近更新 更多