2017-05-16 12 views
0

VBAで同じ行のあるセルから別のセルにフォーミュラをコピーする場合は、VBA/Excel:数式を動的にコピーする可能性がある

E1 = "=(E441+E747+E750)*-1" 
to 
    F1 -> = "=(F441+F747+F750)*-1" 

しかし、このコードスニペット:

Dim r As Excel.Range 
Dim lRow As Long 


lRow = tbXlApp.WorksheetFunction.Match("Test", Range("C:C"), 0) 

'Line 4 
tbXlWs.Cells(lRow, 5).Formula = "=(E441+E747+E750)*-1" 

For Each r In tbXlWs.Range(tbXlWs.Cells(lRow, 6), tbXlWs.Cells(lRow, 4 + x)) 
    r.Formula = tbXlWs.Cells(lRow, 5).Formula 
Next r 

は、単に例を想起ライン4

で定義されたセルの式を貼り付け、それは

E1 = "=(E441+E747+E750)*-1" 
    to 
    F1 -> = "=(E441+E747+E750)*-1 

になる。しかしこのシナリオでは列Fでなければなりません。私は何を変更する必要がありますか?

ありがとうございます!

答えて

1

に一度に数式を設定できます

Dim lRow As Long 

lRow = tbXlApp.WorksheetFunction.Match("Test", Range("C:C"), 0) 

'Line 4 
tbXlWs.Range(tbXlWs.Cells(lRow, 5), tbXlWs.Cells(lRow, 4 + x)).Formula = "=(E441+E747+E750)*-1" 

各式は、その後、あなたはそれをコピーしたかのように、相対的な列に基づいて調整されますExcel内で

+0

素晴らしい仕事、ありがとう!完璧に動作します。 – mffm

0
'Line 4 
tbXlWs.Cells(lRow, 5).Formula = "=(E441+E747+E750)*-1" 

変更この

tbXlWs.Cells(lRow, 5).Formula = "=(F441+F747+F750)*-1" 
+0

こんにちはMaddy、申し訳ありませんが、私はこの時点で十分にはっきりしていませんでした。私は、最初の数式をコピーしていくつかのセルに貼り付けて、数式が動的に調整されるようにする必要があることを意味しました(Excelに入り、数式を含むセルをコピーして別の場所に貼り付ける場合と同じです)数式が変更されました:-) – mffm

関連する問題