Скопируйте / вставьте формулу из ячейки в 18 строк другого столбца, начиная со следующей пустой строки - PullRequest
0 голосов
/ 06 марта 2019

Моя формула в М1.
Мне нужно запустить 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 ]

1 голос
/ 06 марта 2019

Для тех, кому нужна помощь в этом, и Harassed Dad, и 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
0 голосов
/ 06 марта 2019
 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
0 голосов
/ 06 марта 2019

Сначала я бы создал именованный диапазон, который возвращает пустую ячейку после последней заполненной ячейки в столбце 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...