Excel 2013:VBA 将公式从一个单元格复制到下一个单元格

Excel 2013:VBA 将公式从一个单元格复制到下一个单元格

我需要将公式从 Excel 中的单元格 A3 复制到 B3,并使用按钮运行以下宏:

Sub Copy()
    Range("A3").Select
    ActiveCell.Offset(0, 1).Formula = ActiveCell.Formula
End Sub

然后,每次单击按钮时,公式都需要复制到范围 (B3:J3) 中的下一个单元格,直到整个范围都填充完毕。我不想单击一次按钮就填充整个范围,而是每次单击只填充一个单元格,因为这会在几周内发生,因此每周都会填充一个单元格。

答案1

我知道您的问题是,您的代码仅适用于单元格 A3,但您希望它适用于第 3 行的最后一个公式。

如果 B3 为空白,则您的代码将起作用,但如果不是,它将再次复制 A3。

如果 B3 不为空,则需要将第 3 行的最后一个单元格复制到其右侧的单元格。

    Sub CopyToRight()
Dim WB As Workbook
Dim WS As Worksheet

    Set WB = ThisWorkbook
    Set WS = Sheets("Sheet1")
    With WS
        If IsEmpty(.Range("A3").Offset(0, 1)) Then
            .Range("A3").Copy .Range("A3").Offset(0, 1)
        Else
            .Range("A3").End(xlToRight).Copy .Range("A3").End(xlToRight).Offset(0, 1)
        End If
    End With
End Sub

答案2

有一件事必须改变:

  1. “A3”在下一次迭代中必须变成“B3”,或者
  2. .Offset(0,1) 必须扩展才能到达下一个空单元格。

您可以以任何一种方式进行编码,如果为 1,则将 A3 命名为“CopyCell”,然后在正确复制后将名称“CopyCell”更改为 B3。如果为 2,则只需将 Offset(0,1) 更改为 (0,cols),其中 cols = 当前 cols + 1

Sub Button_Click()
'
' Button_Click Macro
'

    Range("CopyMe").Select
    ActiveCell.Offset(0, 1).Formula = ActiveCell.Formula
    Range(ActiveCell.Offset(0, 1), ActiveCell.Offset(0, 1)).Select
    With ActiveWorkbook.Names("CopyMe")
        .Name = "CopyMe"
        .RefersTo = ActiveCell
        .Comment = ""
    End With
'

End Sub

在稳健性方面,它不是很好,因为它假定当前要复制的单元格名为“CopyMe”,如果不是,它就不会起作用。

因此,如果有人运行宏,然后删除该列并尝试再次运行它,它将不起作用。

相关内容