首页 文章

使用VBA复制excel中的相对公式

提问于
浏览
2

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

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

因此,例如在基本列中,我有这个公式= A1 B1,我想制作下一个单元格,这是= B1 C1 next = 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

2 回答

  • 4

    如果要将公式复制到右侧,可以使用 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
    
  • 0

    这两行将从左侧单元格复制公式/内容并复制到参考单元格中 . 这也将复制具有相对参考的公式

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

相关问题