vba - 用VBA复制Excel中的相对公式

标签 vba excel

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

我的基本列包含 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

但这只是从左侧单元格复制值

如果公式相同但不同,那就很容易了。所以我试图找到一种方法来动态引用始终位于左侧的单元格。

这是真正的公式之一

='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

关于vba - 用VBA复制Excel中的相对公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32724251/

相关文章:

vba - 上一级文件夹

vba - vba中的运算符

Excel VLOOKUP 在表数组中具有多个可能的选项

vba - 使用VBA excel(动态行,列)为每一行创建折线图

arrays - Excel VBA - 如何重新调整二维数组?

java - POI - ZIP 条目大小太大

excel - 无法在 Excel VBA 用户窗体中设置多列列表框的选定属性

VBA方法excel根据值将单元格移动到其他行

excel - 提取独特的项目

excel - Excel 单元格中的自动调整和 minHeight