Цель: ускорить работу макроса в конкретной задаче.
В одной (желтой) ячейке - формула, которую нужно макросом копировать вниз на много-много строк. Например, на 99999. Но в некоторых других ячейках (на пути копирования) могут стоять ненулевые значения. Их менять НЕ надо. Как заполнить формулой из желтой все остальные ячейки без чтения проверки и записи отдельно каждой ?
Сейчас читаю, проверяю именно каждую. Это долго. Хотелось бы ускорить. Подскажите плиз, если это возможно.
Доброе время суток. С такой формулой и таким примером можно и так
Код
Public Sub test()
Dim yellwCellFormula As String, destCells As Range, values, i As Long
yellwCellFormula = Range("B2").Formula
Set destCells = Range("B3:B1000")
values = destCells.Value
For i = 1 To UBound(values)
If IsEmpty(values(i, 1)) Then values(i, 1) = yellwCellFormula
Next
destCells.Value = values
End Sub
Андрей VG, а нее. Нет. Надо б чтоб формулы в ячейках были. А не значения с результатов их вычисления. Словно "желтую" формулу потянули мышкой вниз ) Возможно ?
P/S/ Ваш код мне еще разбирать и разбирать для понимания. Быстро читать пока не умею.
Да, все верно пояснил Ігор Гончаренко, а так как нет уверенности, что последняя ячейка не константа то используем следующую, для расширения используемого диапазона. Можно конечно анализировать, но так проще.
Сергей Евдокимов, если есть на что операться, то можно и так. но в примере этого не было. В дюбом случае лучше так
Код
With ws.Range("G5:G" & Cells(Rows.Count, 5).End(xlUp).Row)
.SpecialCells(xlCellTypeFormulas).PasteSpecial Paste:=xlPasteFormulas
.SpecialCells(xlCellTypeBlanks).PasteSpecial Paste:=xlPasteFormulas
end with