Работаю инженером-сметчиком, т.е. считаю стоимость строительства. К сожалению поставлена задача стоимость стр-ва считать в Экселе и сделать что-то типа прайса на все виды работ. Для этого мне придётся проанализировать свои предыдущие данные, но материалы в программе, которой я работаю (Гранд-смета) привязаны к виду работ. В эксель из программы привязку эту не вывести. Кароче все пустые ячейки по Е5 необходимо заполнить тем же значением, что и ближайшая залитая зелёным цветом ячейка сверху. Легче в примере посмотреть, что мне требуется. У кого есть время, прошу помочь. Всего порядка 80 000 позиций у меня ((((
Всем привет!
Работаю инженером-сметчиком, т.е. считаю стоимость строительства. К сожалению поставлена задача стоимость стр-ва считать в Экселе и сделать что-то типа прайса на все виды работ. Для этого мне придётся проанализировать свои предыдущие данные, но материалы в программе, которой я работаю (Гранд-смета) привязаны к виду работ. В эксель из программы привязку эту не вывести. Кароче все пустые ячейки по Е5 необходимо заполнить тем же значением, что и ближайшая залитая зелёным цветом ячейка сверху. Легче в примере посмотреть, что мне требуется. У кого есть время, прошу помочь. Всего порядка 80 000 позиций у меня ((((FpykT1990
Заполнение с помощью макроса. Макрос заполняет столбец "E". Макрос предполагает, что данные начинаются со строки 6 (то есть как в Вашем файле).
[vba]
Код
Sub Автозаполнение_верхними()
Dim arr(), lr As Long, i As Long
lr = Cells(Rows.Count, "A").End(xlUp).Row arr() = Range("E6:E" & lr).Value For i = 2 To UBound(arr) If arr(i, 1) = "" Then arr(i, 1) = arr(i - 1, 1) Next i Range("E6:E" & lr).Value = arr()
MsgBox "Готово!", vbInformation
End Sub
[/vba]
Заполнение с помощью макроса. Макрос заполняет столбец "E". Макрос предполагает, что данные начинаются со строки 6 (то есть как в Вашем файле).
[vba]
Код
Sub Автозаполнение_верхними()
Dim arr(), lr As Long, i As Long
lr = Cells(Rows.Count, "A").End(xlUp).Row arr() = Range("E6:E" & lr).Value For i = 2 To UBound(arr) If arr(i, 1) = "" Then arr(i, 1) = arr(i - 1, 1) Next i Range("E6:E" & lr).Value = arr()
У меня на кнопку в ленте выведен такой (давным-давно писал) [vba]
Код
Sub Zapolnenye_Null() On Error GoTo A With Selection .Resize(.Rows.Count - 1).Offset(1).SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]C" If Application.Calculation <> xlCalculationAutomatic Then .Calculate .Value = .Value End With A: End Sub
[/vba] Работает по выделенному диапазону. Можно сразу несколько столбцов Если выделенный диапазон заканчивается ниже Юзедренжа, то сначала сделает по нижней строке Юзедренжа, а при повторном нажатии уже по выделенному диапазону
У меня на кнопку в ленте выведен такой (давным-давно писал) [vba]
Код
Sub Zapolnenye_Null() On Error GoTo A With Selection .Resize(.Rows.Count - 1).Offset(1).SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]C" If Application.Calculation <> xlCalculationAutomatic Then .Calculate .Value = .Value End With A: End Sub
[/vba] Работает по выделенному диапазону. Можно сразу несколько столбцов Если выделенный диапазон заканчивается ниже Юзедренжа, то сначала сделает по нижней строке Юзедренжа, а при повторном нажатии уже по выделенному диапазону_Boroda_