我的公式在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中也不是高级。
答案 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