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

Excel 将公式从一个单元格复制/粘贴到另一列的18行中,从下一个空行开始,excel,vba,Excel,Vba,我的公式是M1。 我需要运行一个VBA,该VBA将复制该单元格并仅将其粘贴到G列中,但每次运行它时会向下粘贴18行,每次运行它时,它都会从G列的下一个空行开始 如果我使用record宏执行一次,它就是这个样子 Selection.Copy ActiveWindow.SmallScroll Down:=33 Range("G42:G59").Select ActiveSheet.Paste Application.CutCopyMode = False Selection.Copy Selecti

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

如果我使用record宏执行一次,它就是这个样子

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

<> P>我知道这不是最好的方法,我不是Excel中的高级。

< P>首先,我创建一个命名的范围,在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

对于任何需要帮助的人,爸爸和杰克鲁斯特都很烦恼,我和great把他们的答案拼凑起来,让它发挥作用。完成我正在使用的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

谢谢我有点用这两个答案来拼凑出有用的东西。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)。粘贴特殊的XLPaste公式结束子任务。整个集合不起作用,但我使用了vba中“set r=”的范围和“name range”中的另一个答案,效果非常好!再次感谢您的帮助。我遗漏了一个难题,直到今天我才意识到……我需要补充的是,当它将公式粘贴到这18个单元格中时,它会复制同一组18个单元格,并将其粘贴有值,以便将这些值保留在适当的位置。
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