Страницы: 1
RSS
Протягивание формул с помощью макроса
 
Здравствуйте! Помогите написать макрос для протягивания формул. Прикрепляю файл для примера, количество строк может доходить до 100к. Интервалы между ячейками(с черным цветом) непостоянные. Ячейки(с красным текстом) нужно протянуть до следующего значения в столбце.  
 
serega1705, если изначально области между строками пустые
Код
Sub Se()
Dim a As Range, n&
  For Each a In Range("A:E").SpecialCells(xlCellTypeBlanks).Areas
    n = a.Row - 1
    a.FormulaR1C1 = Array("=R[-1]C+R" & n & "C3", "=R[-1]C+R" & n & "C4", "", "", "=R[-1]C+R" & n & "C6")
  Next
End Sub
Изменено: Казанский - 21.11.2018 15:41:35
 
Цитата
serega1705 написал:
количество строк может доходить до 100к.
В таком случае уходите от формул.
 
Кнопка цитирования не для бездумного копирования [МОДЕРАТОР]

Казанский, он создает дополнительные значения в столбцах С и D, в F не создает, но в формуле ячейки Е2 и далее использует пустую ячейку F2. И сразу с А3, В3 и Е3 формула изменяется. То же, происходит в других интервалах , после строк с ячейками черного цвета.
 
serega1705, а, значит формулы в строках ниже констант существуют? Тогда проще их убрать и вставить как в #2
Код
Sub Se()
Dim a As Range, n&
  Range("A:E").SpecialCells(xlCellTypeFormulas).ClearContents
  For Each a In Range("A:E").SpecialCells(xlCellTypeBlanks).Areas
    n = a.Row - 1
    a.FormulaR1C1 = Array("=R[-1]C+R" & n & "C3", "=R[-1]C+R" & n & "C4", "", "", "=R[-1]C+R" & n & "C6")
  Next
End Sub
 
И сразу с А3, В3 и Е3 формула изменяется, первый аргумент перескакивает через одну ячейку. Сам пытался поправить, не могу найти, что исправить или добавить.
 
Цитата
serega1705 написал:
формула изменяется, первый аргумент перескакивает через одну ячейку
Да, странный эффект, похоже на баг в Excel.
Можно копировать существующие формулы, так даже проще
Код
Sub Se1()
Dim a As Range
  For Each a In Range("A:A").SpecialCells(xlCellTypeBlanks).Areas
    a.Cells(0, 1).Resize(, 5).Copy a
  Next
End Sub
 
Спасибо большое, все работает!
Страницы: 1
Наверх