VBA / Excel:动态复制公式的可能性

时间:2017-05-16 09:01:56

标签: excel vba excel-vba formula copy-paste

我想用VBA将一个Formular从一个Cell复制到另一个Cell,

e.g。

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列。我需要改变什么?

谢谢!

2 个答案:

答案 0 :(得分: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中复制它一样。

答案 1 :(得分:0)

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

将此更改为

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