在VBA中复制相关的公式

我试图复制具有相对的行和列名称的公式。

我有10个公式的基列,我试图在右边的列上复制公式5次。

因此,例如在基础列中,我有这个公式= A1 + B1,我想做下一个单元这个= B1 + C1下一个= C1 + D1等等。

我有这个代码

For i = 1 To Range("B1").Value For j = 1 To 10 Sheet2.Cells(5 + j, 2 + i).FormulaR1C1 = "=c[-1]" Next j Next i 

但是这只是从左边的单元格复制价值

如果公式相同但是不同,那将很简单。 所以即时通讯试图find一种方式来dynamic引用总是离开细胞。

这是真正的公式之一

 ='Balance sheet'!B13*360/'P&L'!B2 

我想要下一个细胞

 ='Balance sheet'!C13*360/'P&L'!C2 

和代码我现在有下一个单元格=B3

如果要将公式复制到右侧,可以使用fill操作完成。 所以你的公式在你的基准行和基准列定义的单元格中,并且在你的问题中使用相对寻址,只需要:

 Option Explicit Sub foo() Const lBaseColumn As Long = 3 Const lBaseRow As Long = 6 Const lRpts As Long = 10 Cells(lBaseRow, lBaseColumn).Resize(columnsize:=lRpts).FillRight End Sub 

你应该注意到,你可以从多行FillRight ,如果这是你需要做的。 以下将填写C6:C10到L6:L10

 Option Explicit Sub foo() Const lBaseColumn As Long = 3 Const lBaseRow As Long = 6 Const lColRpts As Long = 10 Const lRows As Long = 5 Cells(lBaseRow, lBaseColumn).Resize(rowsize:=lRows, columnsize:=lColRpts).FillRight End Sub 

这两行将从左侧单元格复制公式/内容并复制到参考单元格中。 这也将相关参考复制公式

 Range(refCellID).Offset(0,-1).Copy Range(refCellID).PasteSpecial