Вы можете вставить одну формулу в диапазон при условии, что вы напишете ее с динамической нефиксированной ($) нотацией, чтобы она везде использовала эквивалентную строку / столбец так, чтобы:
dim lr as long
lr = cells(rows.count,"F").end(xlup).row 'finds the last row in column F
range(cells(12,"G"),cells(lr,"G")).formula = "=F12-H12" 'note that the formula destination and the source data start on 12
Если вы предвидите изменение строки 11 или просто хотите упростить исправление позже, вы можете сделать что-то вроде:
dim lr as long, r as long
r = 12 'can change this, or make in inputbox...
lr = cells(rows.count,"F").end(xlup).row 'finds the last row in column F
range(cells(r,"G"),cells(lr,"G")).formula = "=F" & r & "-H" & r
Edit1: изменил всеОт 11 до 12 с
Edit2: Будет иметь дело с проблемой листов (с использованием только второго кода, поскольку в будущем будет легче изменить):
With Sheets("Report")
dim lr as long, r as long
r = 12 'can change this, or make in inputbox...
lr = .cells(.rows.count,"F").end(xlup).row 'finds the last row in column F
.range(.cells(r,"G"),.cells(lr,"G")).formula = "=F" & r & "-H" & r
End With
Я скопировал / вставил каждый из предоставленных мною кодов и убедился, что они работают, когда связаны с модулем.