Страницы: 1
RSS
Добавление определенного количества строк в определенное место
 
Добрый день! Подскажите, как добавить автоматически пустые строки (в примере - 10 стр, может и 20, но думаю можно регулировать потом количество), перед каждой пустой ячейкой в столбце В? Количество строк может быть разным, большие объемы отчета не позволяют делать добавление в ручную на каждую строчку.
Изменено: enot7 - 28.05.2018 16:15:18 (не правильная формулировка задания)
 
Выделяете 10 строк, начиная с той, перед которой требуется вставить, Ctrl+ (плюс около цифр справа).
Неизлечимых болезней нет, есть неизлечимые люди.
 
А так: добавить строки после заполненной
 
TheBestOfTheBest, так это вручную получается на каждую нужную строчку добавление, а мне нужно автоматичеси, т.к. строк тысячи.
 
Макрос написать можно, но как мы узнаем, по какому признаку находить, после чего вставлять и сколько?
 
StoTisteg, добавить 10 строк (может и 20, но думаю можно регулировать потом количество), перед каждой строчкой где заполнена ячейка в столбце В.
 
Цитата
enot7 написал:
нужную строчку добавление, а мне нужно автоматичеси, т.к. строк тысячи.
А почему это не вписано в #1? Может Вы допишите полностью что надо? С учетом #6
Изменено: TheBestOfTheBest - 28.05.2018 14:53:59
Неизлечимых болезней нет, есть неизлечимые люди.
 
TheBestOfTheBest, вы меня подзапутали) в #1 прописано правильнее после чего и сколько строк.
В итоге: добавить 10 строк (может и 20, но думаю можно регулировать потом количество), перед каждой пустой ячейкой в столбце В.
Изменено: enot7 - 28.05.2018 15:14:57 (не правильная формулировка задания)
 
А где написано; "строк тысячи". Из #1 видно что надо добавить 10 строк и все.
Неизлечимых болезней нет, есть неизлечимые люди.
 
TheBestOfTheBest, азве это обязательно, я же написала автоматически? ранее не приходилось уточнять количество строк в файле, который в работе, я же прикрепила только пример. Может быть тысячи, может быть одна тысяча, а может и 500, это разные отчеты будут.
 
enot7, так?
Код
Sub En()
Dim a As Range
  Application.ScreenUpdating = False
  For Each a In Range("B3", Cells(Rows.Count, "B").End(xlUp)).SpecialCells(xlCellTypeConstants).Areas
    a.Cells(a.Count + 1).Resize(10).EntireRow.Insert
  Next
  Application.ScreenUpdating = True
End Sub
 
Код
Sub RowIns()

   Dim rw As Long
   Dim i As Integer
   
   rw = 1
   Do
      rw = IIf(Cells(rw + 1, 2).Value = "", rw + 1, Cells(rw, 2).End(xlDown).Row + 1)
      For i = 1 To 10 'Здесь регулируем число вставляемых строк
         Rows(rw).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
      Next i
      rw = rw + 11 'И здесь тоже
   Loop While rw < Cells(Rows.Count, 2).End(xlUp).Row

End Sub
Изменено: StoTisteg - 28.05.2018 16:43:58 (Забыл, что строки бывают через одну...)
 
Казанский, Вы вставляете перед каждой заполненной:
Цитата
Казанский написал:
SpecialCells(xlCellTypeConstants)
 
Цитата
enot7 написал:
азве это обязательно, я же написала автоматически? ранее не приходилось уточнять количество строк в файле, который в работе, я же прикрепила только пример. Может быть тысячи, может быть одна тысяча, а может и 500, это разные отчеты будут.
Если строк 20, то проще руками сделать, чем тратить время на отладку макроса,
Если их 500-2000, то можно циклом с шагом -1 сделать.
Если их 500 000, т надо мудрить с массивом, т.к. на листе  добавление будет выполняться долго.

три абсолютно разных подхода.
Кроме этого, Вам говорят третий раз, что надо указывать объем первоначальных данных, Вы же - "зачем". Кто лучше разбирается Вы или программист?  
Изменено: TheBestOfTheBest - 28.05.2018 21:03:01
Неизлечимых болезней нет, есть неизлечимые люди.
 
StoTisteg, нет, ПОСЛЕ каждой заполненной ОБЛАСТИ. Пройдите по шагам, увидите.
 
используйте процедуру
Код
Sub InsSameRowsBeforeRow(RowsCount&, RowNumber&)
  Rows(RowNumber).Resize(RowsCount).Insert
End Sub
в нужным местах столько раз, сколько Вам требуется
пример использования
Код
Sub Test()
  InsSameRowsBeforeRow 10, 5
End Sub
процедура Test вставит пред 5-й строкой 10 новых строк (5-я станет 15-й)
Изменено: Ігор Гончаренко - 29.05.2018 09:33:21
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Казанский, спасибо, все срабатывает!
 
StoTisteg, спасибо ваш вариант тоже очень подходит!!
 
Ігор Гончаренко, доброго дня Вам. Периодически пользуюсь Вашей процедурой из #16. Скажите, возможно-ли как-то визуализировать изменение выбора вставки - перед какой строкой вставлять и сколько строк вставить (наверное, InputBox?)? А то каждый раз лазить для внесения изменений в тело макроса несколько неудобно :oops:  :D .
P.s. Вопрос решён вот таким макросом: :)
Код
Sub vstavka_strok()  'Вставить несколько строк с помощью VBA
   Dim iRow As Long
   Dim iCount As Long
   Dim i As Long

   iCount = InputBox(Prompt:="Сколько строк вы хотите добавить?")
   iRow = InputBox _
         (Prompt:="Перед какой строки вы хотите добавить новые строки? (Введите номер строки)")
   
   For i = 1 To iCount
      Rows(iRow).EntireRow.Insert
   Next i
End Sub
Изменено: Zagadka - 21.04.2023 09:47:55
Страницы: 1
Наверх