从一个单元格复制/粘贴公式到另一列的18行中,从下一个空行开始

时间:2019-03-06 13:31:49

标签: excel vba

我的公式在M1中。
我需要运行一个VBA,它将只复制该单元格并将其粘贴到G列中,但是每次运行它以及每次运行它时,它向下排18行,它都将从G列的下一个空行开始。

如果我一次使用了记录宏,它就是这样。

Selection.Copy
ActiveWindow.SmallScroll Down:=33
Range("G42:G59").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False

我知道这不是最好的方法,而且我在Excel中也不是高级。

3 个答案:

答案 0 :(得分:1)

对于任何需要帮助的人,“骚扰爸爸”和“ jakrooster”都很棒,我拼凑了他们的答案以使它起作用。完成我正在使用的VBA。

Sub Cash()

Dim rng_Copy As Range
Dim rng_Paste As Range

Set rng_Copy = Sheet1.Range("$M$1")
Set rng_Paste = Range("G" & ActiveSheet.Rows.Count).End(xlUp).Offset(1, 0)

rng_Copy.Copy
rng_Paste.Resize(18, 1).PasteSpecial xlPasteFormulas
End Sub

答案 1 :(得分:0)

首先,我将创建一个命名范围,该范围返回G列中最后一个填充的单元格之后的空白单元格。类似这样:

=INDEX(Sheet1!$G:$G,MAX(2,IFERROR(MATCH(" *",Sheet1!$G:$G,-1),0),IFERROR(MATCH(1E+306,Sheet1!$G:$G,1),0))+1)

然后我将在VBA中使用该命名范围复制M1中的公式并将其应用于接下来的18行。

Sub s_CopyPaste()

Dim rng_Copy As Range
Dim rng_Paste As Range

Set rng_Copy = Sheet1.Range("$M$1")
Set rng_Paste = Range("NAMED RANGE")

rng_Copy.Copy
rng_Paste.Resize(18, 1).PasteSpecial xlPasteFormulas 'resize the blank cell to an 18x1 range

End Sub

答案 2 :(得分:0)

 Sub Fred()
 dim r as range
 set r = range("G" & activesheet.rows.count).end(xlup).offset(1,0)
 Range("M1").copy  r
 r.copy range(r.address & ":G" & r.row + 17)
 end sub