Приветствую!
Существует задача в два этапа: необходимо 1) добавить по несколько
пустых
строк (а именно — по 3 штуки) после каждой строки с содержимым и 2)
скопировать
на них содержимое строк, после которых эти пустые строки были добавлены (по сути, дублировать данные по три раза).
P. S. На форуме находил аналогичные вопросы и присланные по ним макросы, но они не соответствовали моим требованиям в полной мере, а поскольку я только начинаю своё знакомство с VBA, все мои попытки понять логику команд и адаптировать их под мой кейс приводили лишь к часам потраченного впустую времени (например, был макрос, который просто вставлял по одной пустой строке через одну и т. д.).
Прикладываю к этой теме файл с примером того, что нужно сделать, и прошу, по возможности, кратко описать логику команд и как я могу подстраивать их под индивидуальные случаи в будущем (допустим, если возникнет необходимость вставить не по три пустые строки, а по две или четыре).
Также прикладываю найденный мной на форуме макрос, о котором шла речь (ссылка на тему от 2008 года:
https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=8&TID=2635
)
Спасибо!
Вставка пустой строки или пустого столбца в указанное место на рабочем листе из кода VBA Excel, чтобы расширить заполненную таблицу изнутри или снаружи.
Вставка пустой строки или пустого столбца используется для добавления пропущенной или новой информации внутри заполненного диапазона (таблицы) или для расширения таблицы по строкам или столбцам с сохранением форматирования.
Вставка пустой строки
Вставка пустой строки в VBA Excel осуществляется с помощью метода Range.Insert. Указанная строка сдвигается вниз, на ее место вставляется пустая строка, а форматы, по умолчанию, копируются в новую строку из строки выше.
Вставка одной пустой строки над 10 строкой:
Rows(10).Insert Range(«A10»).EntireRow.Insert |
Вставка семи пустых строк над 5 строкой:
Rows(«5:11»).Insert Range(«A5:A11»).EntireRow.Insert |
Добавление десяти пустых строк над активной ячейкой с помощью цикла:
Sub Test() Dim i As Long For i = 1 To 10 ActiveCell.EntireRow.Insert Next End Sub |
Вставка пустого столбца
Вставка пустого столбца в VBA Excel, как и пустой строки, осуществляется с помощью метода Range.Insert. Указанный столбец сдвигается вправо, на его место вставляется пустой столбец, а форматы, по умолчанию, копируются в новый столбец из столбца слева.
Вставка одного пустого столбца слева от 5 столбца:
Columns(5).Insert Columns(«E»).Insert Range(«E6»).EntireColumn.Insert |
Вставка пяти пустых столбцов слева от 4 столбца:
Columns(«D:H»).Insert Range(«D6:H20»).EntireColumn.Insert |
Обратите внимание, что запись вида Columns("5:11").Insert
не работает.
Добавление шести пустых столбцов слева от активной ячейки с помощью цикла:
Sub Test1() Dim i As Long For i = 1 To 6 ActiveCell.EntireColumn.Insert Next End Sub |
Skip to content
Как вставить пустые строки в диапазон
На чтение 3 мин. Просмотров 3.6k.
Что делает макрос: Иногда бывает нужно добавить строки в наборе данных. Этот макрос позволяет вставить пустые строки в диапазоне.
Содержание
- Как макрос работает
- Код макроса
- Как этот код работает
- Как использовать
Как макрос работает
Этот макрос выполняет обратный цикл по выбранной области с помощью счетчика. Он начинается в последней строке диапазона, вставляя две пустые строки, а затем переходит к предыдущей строке в диапазоне. Он продолжает делать ту же самую вставку для каждого цикла, каждый раз, каждый раз увеличивая счетчик до предыдущей строки.
Код макроса
Sub VstavitPustieStrokiVDiapazon() 'Шаг 1: Объявляем переменные Dim MyRange As Range Dim iCounter As Long 'Шаг 2: Определяем целевой диапазон Set MyRange = Range("C6:D17") 'Шаг 3: Запуск обратного цикла For iCounter = MyRange.Rows.Count To 2 Step -1 'Шаг 4: Вставляем 2 пустые строки MyRange.Rows(iCounter).EntireRow.Insert MyRange.Rows(iCounter).EntireRow.Insert 'Шаг 5: Увеличиваем счетчик Next iCounter End Sub
Как этот код работает
- Сначала мы объявляем две переменные. Первая переменная является переменной объекта под названием MyRange. Это переменная объекта, которая определяет целевой диапазон. Другая переменная является переменной Long Integer называется iCounter. Эта переменная служит инкрементному счетчику.
- На шаге 2 макрос заполняет переменную MyRange с целевым диапазоном. В этом примере мы используем Range («C6:D17»). Если ваш целевой диапазон является именованным, можно просто ввести его название — Range («MyNamedRange»).
- На этом этапе макрос устанавливает параметры для инкрементного счетчика, чтобы начать на максимальном 1 для диапазона (MyRange.Rows.Count) и заканчивается в 2 (второй ряд от выбранного диапазона). Обратите внимание, что мы используем Шаг-1 классификатор. Поскольку мы указываем шаг -1, Excel знает, что мы будем увеличивать счетчик в обратном направлении, двигаясь назад один шаг на каждой итерации. В целом, Шаг 3 говорит Excel, чтобы начать в последней строке выбранного диапазона, двигаясь назад, пока он не дойдет до второй строки диапазона. При работе с диапазоном, вы можете явно вызвать какую-либо конкретную строку в диапазоне, передавая номер индекса строки к коллекции Rows диапазона. Например, диапазон («D6: D17»). Ряд (5) указывает на пятой строке в диапазоне D6: D17.
- На шаге 4, макрос использует переменную iCounter как номер индекса для коллекции Строки MyRange. Это помогает точно определить какой именно макрос работает в текущем цикле. Макрос использует метод EntireRow.Insert, чтобы вставить новую пустую строку. Так как мы хотим две пустые строки, мы делаем это дважды.
- На шаге 5, макрос возвращается к началу цикла увеличивать счетчик вниз.
Как использовать
Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:
- Активируйте редактор Visual Basic, нажав ALT + F11.
- Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
- Выберите Insert➜Module.
- Введите или вставьте код.
Одними из наиболее часто используемых действий при работе с таблицами в Excel являются добавление и удаление строк вообще и пустых строк в частности. Рассмотрим механизмы добавления и удаления пустых строк в таблицах.
Добавить новую строку стандартными средствами Excel можно следующим образом: правой кнопкой мыши кликнуть на номере строки, над которой нужно вставить новую строку и выбрать в контекстном меню пункт «Вставить»
При этом, если какие-то данные в таблице были отформатированы (изменены шрифты, изменены цвета, установлены заливки ячеек), то после добавления новой строки появится кнопка «Параметры добавления», раскрыв которую можно выбрать для новой строки один из трех пунктов «Форматировать как сверху», «Форматировать как снизу» и «Очистить формат».
Вставить пустую строку можно также и через кнопки на панели инструментов. Для этого выделите строку, над которой нужно вставить новую пустую строку. После этого зайдите на вкладку «Главная», в группу «Ячейки» и раскройте меню кнопки «Вставить», выберите пункт «Вставить строки на лист».
Добавление нескольких пустых строк в таблицу Excel
Для того, чтобы вставить несколько новых строк в документ, необходимо выделить строку, выше которой нужно добавить новые строки, и не отпуская левой кнопки мыши выделить столько строк, сколько нужно вставить.
После того как строки выделены, необходимо щелкнуть правой кнопкой мыши на выделенном участке листа и из контекстного меню выбрать пункт «Вставить», либо воспользоваться кнопками во вкладках ленты, аналогично тому, как это описано в предыдущем пункте.
Как вставить/добавить заданное количество пустых/новых строк в определенные места?
Стандартными средствами Excel такую задачу решить можно не всегда, но не будем забывать про то, что существует такой мощный инструмент как VBA, позволяющий автоматизировать повторяющиеся однотипные действия. По инструкции устанавливается в приложение Excel надстройка для вставки пустых строк, которая предоставляет следующие возможности:
1. Выбор искомого значения, которым могут являться пустые ячейки, непустые ячейки, ячейки с заданным цветом заливки, ячейки с заданным числом, а также ячейки с заданным текстом (быквы, символы);
2. вставка заданного количества пустых строк как выше, так и ниже строк с искомым значением;
3. вставка разного количества пустых строк в зависимости от значения, указанного в заданном столбце;
4. вставка новых строк ниже каждой второй, третьей, пятой, n-ной строки выбранного диапазона (шаг задается пользователем);
5. вставлять пустые строки при каждой смене значения в заданном столбце;
6. вставлять пустые строки между заполненными (после каждой заполненной ячейки в столбце с заданным номером);
7. выбор диапазонов для вставки строк, предусмотрено несколько режимов:
а) используемый диапазон листа — диапазон активного листа, включающий в себя все ячейки, находящиеся между первой заполненной и последней заполненной ячейкой;
б) используемые диапазоны — отличается от предыдущего режима тем, что обработка данных производится в используемом диапазоне каждого листа рабочей книги;
в) диапазон листа — диапазон, который выберет пользователь;
г) диапазоны листов — это одноименные диапазоны на всех листа рабочей книги.
*Внимательно выбирайте диапазон для получения желаемого результата!
8. выбор необходимых условий для значений ячеек.
Для числовых значений: равно/не равно, больше/не больше, меньше/не меньше.
Для текстовых значений: совпадает/не совпадает, содержит/не содержит, начинается/не начинается, заканчивается/не заканчивается.
надстройка (макрос) для добавления пустых строк в зависимости от условий и значений ячеек
Программа выполняет проверку всех ячеек заданного диапазона и при выполнении выбранного условия вставляет нужное пользователю количество пустых строк над/под строкой (на выбор), содержащей ячейку с заданным значением. На выбор пользователя представлено множество условий для значений ячеек, с помощью которых можно определить места для вставки новых строк, а также предоставлен выбор диапазонов для обработки данных. Для большей гибкости поиск ячеек с нужными значениями можно осуществлять раздельно, как по текстовым значениям ячеек, так и по числовым. Предусмотрен также поиск как пустых, так и непустых ячеек. Этот макрос позволяет также добавлять новые строки в заданном количестве в каждую n-ую строку выбранного диапазона. Если, к примеру, вставить по две пустые строки ниже каждой второй строки диапазона А2:А24, т ополучим следующий результат:
Вставка разного количества пустых строк
При помощи надстройки можно вставлять изменяющееся количество пустых строк, если количество вставляемых строк указано в отдельном столбце.
Если установить флажок в поле «Разное количество пустых строк для вставки», то поле с количеством строк для вставки изменяется на номер столбца, в котором указаны числовые значения.
В результате программа определяет номер строки, которая подходит под заданные пользователем условия и вставляет столько пустых строк, сколько указано в этой строке заданного столбца.
Удаление пустых строк
Удаление строк в таблицах Excel уже рассматривалось на страницах этого сайта, удаление же пустых строк является частным случаем удаления строк, следует заметить, что удаление пустых строк, как собственно и их вставку, можно производить программно, при помощи макроса (надстройки). Обо всем этом можно прочитать подробнее.
Другие материалы по теме:
dmitry205 2 / 2 / 0 Регистрация: 14.05.2010 Сообщений: 43 |
||||||||
1 |
||||||||
Вставка пустой строки снизу выделенной строки18.08.2020, 13:56. Показов 7433. Ответов 10 Метки нет (Все метки)
Всем привет.
Вставляет пустую строку сверху, как и код:
Как сделать это снизу? П.С. Строку ниже на 1 от выделенной нельзя брать, т.к. там диапазон объединённых ячеек от 2 до 100+, и он вставляет именно это кол-во сверху, а надо всего лишь одну.
0 |
Ципихович Эндрю 1508 / 478 / 56 Регистрация: 10.04.2009 Сообщений: 8,008 |
||||
18.08.2020, 14:02 |
2 |
|||
Ворд или Эксель? Добавлено через 1 минуту
0 |
2 / 2 / 0 Регистрация: 14.05.2010 Сообщений: 43 |
|
18.08.2020, 14:02 [ТС] |
3 |
Ворд или Эксель? Excel
0 |
КостяФедореев Часто онлайн 790 / 529 / 237 Регистрация: 09.01.2017 Сообщений: 1,820 |
||||
18.08.2020, 14:03 |
4 |
|||
dmitry205,
0 |
2 / 2 / 0 Регистрация: 14.05.2010 Сообщений: 43 |
|
18.08.2020, 14:07 [ТС] |
5 |
r = ActiveCell.Row + 1 Яж написал, что нельзя это сделать со строкой от выделенной на +1, там объединённый диапазон и он вставляет на кол-во объединённых строк. А снимать объединение и снова его делать с диапазоном который уже изменился — сильно не хочется.
0 |
amd48 779 / 461 / 79 Регистрация: 18.05.2016 Сообщений: 1,242 Записей в блоге: 4 |
||||
18.08.2020, 14:12 |
6 |
|||
0 |
dmitry205 2 / 2 / 0 Регистрация: 14.05.2010 Сообщений: 43 |
||||||||
18.08.2020, 14:21 [ТС] |
7 |
|||||||
ActiveCell.EntireRow.Insert
как и
Вставляет пустую строку выше выделенной строки.
0 |
Burk 1811 / 1134 / 345 Регистрация: 11.07.2014 Сообщений: 3,999 |
||||
18.08.2020, 14:32 |
8 |
|||
Решение
1 |
Часто онлайн 790 / 529 / 237 Регистрация: 09.01.2017 Сообщений: 1,820 |
|
18.08.2020, 14:35 |
9 |
он вставляет на кол-во объединённых строк это как?
0 |
2 / 2 / 0 Регистрация: 14.05.2010 Сообщений: 43 |
|
18.08.2020, 14:51 [ТС] |
10 |
1 Магистр Йода низкий тебе поклон. Добавлено через 1 минуту
это как? Select выделяет все строки в объединённом диапазоне, даже если ты говоришь ему выделить только одну.
0 |
1811 / 1134 / 345 Регистрация: 11.07.2014 Сообщений: 3,999 |
|
18.08.2020, 15:17 |
11 |
Избавил от головной боли на долгий срок «Сказали мне сегодня не надейся, не стоит уповать на небеса ….» /В.Высоцкий/
0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
18.08.2020, 15:17 |
Помогаю со студенческими работами здесь Полосатое закрашивание строк от пустой до пустой строки DBNavigator, создание строки снизу Макросы вставки строки сверху/снизу… Прошу вас помочь, сам я точно не справлюсь!! В таблице, скажем, из 4-х столбцов…
Удаление выделенной строки Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 11 |