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


1

我需要在Excel中将一个公式从Cell A3复制到B3,使用按钮在宏下运行:

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

然后,随后每次单击该按钮,都需要将公式复制到范围(B3:J3)中的下一个单元格,直到填充整个范围。我不希望只需点击一下按钮即可立即填充范围,而只是每次点击一个单元格,因为这将在几周内发生,因此每周要填充一个单元格。

Answers:


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

谢谢马克,这就像一个魅力,非常感谢。我可以再问你一件事,在将公式复制到下一个单元格之前,如何将前一个单元格的公式转换为显示的值?例如,该公式返回一个值,比方说100,然后我更新一个查找表,其中包含下一个单元格中的公式将复制到右边后将处理120的值。我想保留前一个左手单元格中的原始值,因为它也会在查找表单中输入新值时更新,任何想法我如何管理它?
Coenie

这应该作为一个新问题发布。您可以使用我的代码作为起点,并在复制之前将要复制的单元格的值分配给变量,然后将变量分配给复制后复制的单元格。如果你不能使它工作,尝试它并回来另一个问题。此外,单击投票下方右侧的框,将答案标记为已接受。
Mark Fitzgerald

那将是左边,而不是右边。请原谅我的Lysdexia
Mark Fitzgerald

1

有一点需要改变:

  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”,如果不是,则它将不起作用。

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


谢谢kztd,我还没有尝试过你的解决方案,因为Mark的解决方案正是我想做的。但我也会试一试。
Coenie
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.