Excel VBA引用其他工作簿通过" set"使用通用变量,在公式中保留该引用

时间:2016-07-15 12:56:12

标签: excel vba excel-vba

这是我的问题。我正在运行一个必须每周更新的中央KPI文件。它指的是具有特定名称的文件+他们所在的当前周。例如,KPI指的是DT1P和MPO文件,均以当前周结束。

因此,对于2016-28周,中央KPI文件应查找MPO2016-28.xlsx和DT1P2016-28.xlsx中的值。

对于2016-29周,中央KPI文件应查找MPO2016-29.xlsx和DT1P2016-29.xlsx中的值。

但是,当我尝试运行公式来从这些工作表中进行一些计算时,我不知道如何使一周通用(在KPI文件中的Range("E1")中进行一周),而不仅仅是引用文件的整个位置。我该如何解决这个问题?

我有:

Set wb_MPO = Workbooks.Open("\\S007v\MPO" & Range("e1").Value & ".xlsx")
wb_KPI.Activate
Set wb_DT1P = Workbooks.Open("\\S007v\DT1P" & Range("e1").Value & ".xlsx")
wb_KPI.Activate

定义需要打开的文件。

然而,我的公式看起来像这样(还有更多的公式,但原则保持不变,所以我不会打扰你)

   Range("E4").FormulaR1C1 = _
        "=INDEX('[MPO2016-28.xlsx]CSR MPO'!C10,MATCH(RC[-4],'[MPO2016-28.xlsx]CSR MPO'!C1,0),0)"

可能是这样的:

   Range("E4").FormulaR1C1 = _
            "=INDEX('[wb_MPO]CSR MPO'!C10,MATCH(RC[-4],'[wb_MPO]CSR MPO'!C1,0),0)"

还是我完全离开?

提前感谢您的支持:)

1 个答案:

答案 0 :(得分:1)

你有正确的想法,但它会是:

Range("E4").FormulaR1C1 = _
            "=INDEX('[" & wb_MPO.Name & "]CSR MPO'!C10,MATCH(RC[-4],'[" & wb_MPO.Name & "]CSR MPO'!C1,0),0)"

这仅在您尝试引用的工作簿打开时才有效。我觉得有可能更好的方法来提取这些信息,而不是打开工作簿并将公式写入单元格。