2017-05-05 7 views
2

式をコピーして特定の範囲のセルに貼り付けようとしています。私が持っている式(以下に示す)は、ソースブックからのセルの内容に基づいて更新する必要があります。いくつかのコンテキスト、以下のマクロが存在する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 

ご迷惑をおかけして申し訳ございません。

答えて

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への参照を保持し、(そう$A$1)にしたい場合はA1参照は絶対にする必要があるかもしれません。セルA1を想定し

+0

それはああ、おっと...私は 'レンジ(「A1」)あなたはそれを構築' @JuanSebastianMedina –

+0

単に「Athens_OperatingProjection_.xlsx」へのファイル参照を短縮することになりました間接関数が必要になります。 – BruceWayne

+0

@BruceWayne言い方をするのを忘れて、 – sktneer

1

は、文字列を持っている、あなたは...他の人が示唆されている方法と同様に

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

D'oh! 'Range(" A1 ")'を入れるのを忘れてしまった。これは、OPのためにそれを行う必要があります。 – BruceWayne

0

が、2つの変更を、これを試してください。 1)数式で直接Cellを参照するのではなく、その外に必要なものを定義します。そうすれば、セルA1から移動することに決めた場合は、1つの部分だけを更新するだけです。 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)" 
関連する問題