Пытаюсь добавить в таблице после каждого блока периода (по столбцу С) добавить пустую строку. Нашел макрос (в файле) который добавляет с заданным в нем интервалом (в моем примере 3 т.к. пока 3 периода) пустые строки + почему то он добавляет и выше таблицы строки тоже (пытался изменить не получилось). Но количество периодов растет и в ручную в макросе менять можно конечно, но для пользователей это космос куда-то заходить и менять. Можно ли это как то автоматизировать?
Добрый день всем участникам форума!
Пытаюсь добавить в таблице после каждого блока периода (по столбцу С) добавить пустую строку. Нашел макрос (в файле) который добавляет с заданным в нем интервалом (в моем примере 3 т.к. пока 3 периода) пустые строки + почему то он добавляет и выше таблицы строки тоже (пытался изменить не получилось). Но количество периодов растет и в ручную в макросе менять можно конечно, но для пользователей это космос куда-то заходить и менять. Можно ли это как то автоматизировать?Anis625
Нашел ошибку чтобы выше таблицы не добавлял строки, исправил: [vba]
Код
Sub Insert_Rows2() Dim li As Long Application.ScreenUpdating = 0 For li = Cells(Rows.Count, 1).End(xlUp).Row To 6 Step -3 Rows(li + 1).Insert Next li Application.ScreenUpdating = 1 End Sub
[/vba] Подскажите, пожалуйста, как заменить Step -3 чтобы учитывал количество периодов?
Нашел ошибку чтобы выше таблицы не добавлял строки, исправил: [vba]
Код
Sub Insert_Rows2() Dim li As Long Application.ScreenUpdating = 0 For li = Cells(Rows.Count, 1).End(xlUp).Row To 6 Step -3 Rows(li + 1).Insert Next li Application.ScreenUpdating = 1 End Sub
[/vba] Подскажите, пожалуйста, как заменить Step -3 чтобы учитывал количество периодов?Anis625
Сообщение отредактировал Anis625 - Пятница, 04.09.2020, 15:46
Sub Insert_Rows() Dim lLastRow As Long, li As Long Application.ScreenUpdating = 0 lLastRow = Cells(Rows.Count, 1).End(xlUp).Row For li = lLastRow To 6 Step -1 If Len(Cells(li, 1)) Then Rows(li).Insert Next li Application.ScreenUpdating = 1 End Sub
[/vba] или [vba]
Код
Sub Insert_Rows22() On Error Resume Next: Err.Clear Range("A7", Cells(Rows.Count, 1).End(xlUp)).SpecialCells(xlCellTypeFormulas, 1).EntireRow.Insert End Sub
[/vba]
попробуйте так: [vba]
Код
Sub Insert_Rows() Dim lLastRow As Long, li As Long Application.ScreenUpdating = 0 lLastRow = Cells(Rows.Count, 1).End(xlUp).Row For li = lLastRow To 6 Step -1 If Len(Cells(li, 1)) Then Rows(li).Insert Next li Application.ScreenUpdating = 1 End Sub
[/vba] или [vba]
Код
Sub Insert_Rows22() On Error Resume Next: Err.Clear Range("A7", Cells(Rows.Count, 1).End(xlUp)).SpecialCells(xlCellTypeFormulas, 1).EntireRow.Insert End Sub
Pelena, Наверно макросом можно посчитать количество уникальных значений в столбце С или как вариант разница между номером строки значения 2 (в столбце номер по порядку) и значения 1 +1
Pelena, Наверно макросом можно посчитать количество уникальных значений в столбце С или как вариант разница между номером строки значения 2 (в столбце номер по порядку) и значения 1 +1Anis625
nilem, Круто. Макрос срабатывает, но применяется только для первой группы строк, в последней - не добавляет строку Проверил оба, к нижней строке не добавляется строка
nilem, Круто. Макрос срабатывает, но применяется только для первой группы строк, в последней - не добавляет строку Проверил оба, к нижней строке не добавляется строкаAnis625
Сообщение отредактировал Anis625 - Пятница, 04.09.2020, 16:51