Предположим, у вас есть диапазон данных, и вы хотите автоматически вставлять пустые строки выше или ниже определенного значения в Excel, например, автоматически вставлять строки ниже нулевого значения, как показано ниже. В Excel нет прямого способа решить эту задачу, но я могу ввести код макроса для автоматической вставки строк на основе определенного значения в Excel.
Вставить строку ниже на основе значения ячейки с помощью VBA
Вставьте строку выше на основе значения ячейки с помощью Kutools for Excel
Чтобы вставить строку на основе значения ячейки, запустив VBA, выполните следующие действия:
1. Нажмите Alt + F11 одновременно, а Microsoft Visual Basic для приложений окно выскакивает.
2. Нажмите Вставить > Модули, затем вставьте ниже код VBA во всплывающий Модули окно.
VBA: вставьте строку ниже на основе значения ячейки.
Sub BlankLine()
'Updateby20150203
Dim Rng As Range
Dim WorkRng As Range
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type: = 8)
Set WorkRng = WorkRng.Columns(1)
xLastRow = WorkRng.Rows.Count
Application.ScreenUpdating = False
For xRowIndex = xLastRow To 1 Step - 1
Set Rng = WorkRng.Range("A" & xRowIndex)
If Rng.Value = "0" Then
Rng.Offset(1, 0).EntireRow.Insert Shift: = xlDown
End If
Next
Application.ScreenUpdating = True
End Sub
3. Нажмите F5 ключа или Run нажмите кнопку, появится диалоговое окно и выберите столбец, содержащий ноль. Смотрите скриншот:
4. Нажмите OK. Тогда пустые строки будут вставлены ниже нулевого значения.
Функции:
1. Если вы хотите вставить строки на основе другого значения, вы можете изменить 0 на любое значение, которое вы хотите в VBA: Если Rng.Value = «0», то.
2. Если вы хотите вставить строки выше нуля или другого значения, вы можете использовать приведенный ниже код vba.
VBA: вставить строку выше нулевого значения:
Sub BlankLine()
'Updateby20150203
Dim Rng As Range
Dim WorkRng As Range
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type: = 8)
Set WorkRng = WorkRng.Columns(1)
xLastRow = WorkRng.Rows.Count
Application.ScreenUpdating = False
For xRowIndex = xLastRow To 1 Step - 1
Set Rng = WorkRng.Range("A" & xRowIndex)
If Rng.Value = "0" Then
Rng.EntireRow.Insert Shift: = xlDown
End If
Next
Application.ScreenUpdating = True
End Sub
Если вы не знакомы с VBA, вы можете попробовать Kutools for Excel‘s Выбрать определенные ячейки утилита, а затем вставьте строки выше.
После установки Kutools for Excel, пожалуйста, сделайте следующее:(Бесплатная загрузка Kutools for Excel Сейчас!)
1. Выберите список, из которого вы хотите найти определенные ячейки, и нажмите Кутулс > Выберите > Выбрать определенные ячейки. Смотрите скриншот:
2. В появившемся диалоговом окне отметьте Весь ряд вариант, а затем перейдите, чтобы выбрать Равно от Конкретный тип список, а затем введите значение, которое вы хотите найти, в правом текстовом поле. Смотрите скриншот:
3. Нажмите Ok, и появится диалоговое окно, напоминающее количество выбранных строк, просто закройте его.
4. Поместите курсор в одну выбранную строку и щелкните правой кнопкой мыши, чтобы выбрать Вставить из контекстного меню. Смотрите скриншот:
Теперь строки вставляются выше на основе определенного значения.
Относительные статьи:
- Вставить пустые строки в Excel
Лучшие инструменты для работы в офисе
Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%
- Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
- Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон…
- Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны…
- Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
- Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
- Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии…
- Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
- Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF…
- Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
Вкладка Office: интерфейс с вкладками в Office и упрощение работы
- Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
Комментарии (43)
Оценок пока нет. Оцените первым!
На чтение 3 мин. Просмотров 69 Опубликовано 21.05.2021
Предположим, у вас есть диапазон данных, и вы хотите автоматически вставлять пустые строки выше или ниже определенного значения в Excel, например, автоматически вставлять строки ниже нулевого значения, как показано ниже. В Excel нет прямого способа решить эту задачу, но я могу ввести код макроса для автоматической вставки строк на основе определенного значения в Excel.
Вставить строку ниже на основе ячейки значение с VBA
Вставить строку выше на основе значения ячейки с помощью Kutools for Excel
Содержание
- Вставить строку ниже на основе значения ячейки с помощью VBA
- Вставить строку выше на основе значение ячейки с помощью Kutools for Excel
- Вставить строки сверху на основе значения ячейки
- Относительные статьи:
Вставить строку ниже на основе значения ячейки с помощью VBA
Чтобы вставить строку на основе значения ячейки с помощью VBA, выполните следующие действия:
1. Одновременно нажмите клавиши Alt + F11 , и появится окно Microsoft Visual Basic для приложений .
2. Нажмите Вставить > Module , затем вставьте ниже код VBA в всплывающее окно Module .
VBA: вставьте строку ниже на основе значения ячейки.
3. Нажмите клавишу F5 или Выполнить , появится диалоговое окно и выберите столбец, содержащий ноль. См. Снимок экрана:
4. Нажмите ОК . Затем пустые строки будут вставлены ниже нулевого значения.
Совет :
1. Если вы хотите вставить строки на основе другого значения, вы можете изменить 0 на любое значение в VBA: If Rng.Value = “0” Then.
2. Если вы хотите вставить строки с нулевым значением или другим значением, вы можете использовать приведенный ниже код vba.
VBA: Вставить строку с нулевым значением:
Вставить строку выше на основе значение ячейки с помощью Kutools for Excel
Если вы не знакомы с VBA, вы можете попробовать Kutools for Excel Выбрать Определенные ячейки , а затем вставьте строки выше.
Kutools for Excel , с более чем 300 удобными функциями, облегчит вашу работу. |
Бесплатная загрузка |
После установки Kutools for Excel, сделайте следующее: (Загрузите Kutools for Excel бесплатно прямо сейчас! )
1. Выберите список, из которого вы хотите найти определенные ячейки, и нажмите Kutools > Выбрать > Выбрать определенные ячейки . См. Снимок экрана:
2. В появившемся диалоговом окне установите флажок Вся строка , затем выберите Равно из списка Определенный тип , а затем введите значение, которое вы хотите найти, в правом текстовом поле. См. Снимок экрана:
3. Нажмите Ok , и появится диалоговое окно с напоминанием о количестве выбранных строк, просто закройте его.
4. Поместите курсор в одну выбранную строку и щелкните правой кнопкой мыши, чтобы выбрать Вставить из контекстного меню. См. Снимок экрана:
Теперь строки вставляются выше на основе определенного значения.
Вставить строки сверху на основе значения ячейки
Kutools для Excel: 300 + функции, которые вам необходимы в Excel, 30-дневная бесплатная пробная версия отсюда
Относительные статьи:
- Вставьте пустые строки в Excel
Макрос: Добавление пустых строк под и по значению в ячейке |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
Имеется табличка со строками «освещение» и «мелкое» необходимо чтобы при записи ячеек в 1 строке (ШР1,ШР2,ШР3 итд), под строками «освещение» и «мелкое» автоматически добавлялись строки с этими значениями (выделил красным), значений в 1 строке может быть сколько угодно, поэтому необходимо чтобы табличка сама «удлинялась».
Если первое «увеличение» таблички реализуется, то как сделать еще, чтобы в ячейке G10 и G18 производилось суммирование значений над ней в пределах (выделил синим), и итоговое суммирование значений ячеек G10 и G18 в ячейку G19?
Фото таблицы:
-
Вопрос заданболее двух лет назад
-
991 просмотр
Содержание
- Размер ячейки
- Макрос для вставки строк с определенной высотой
- Высота строки
- Добавление нескольких пустых строк в таблицу Excel
- Описание работы
- Вставка произвольного количества строк
- Вставка строк при изменении значения в столбце
- Удаление пустых строк
- Надстройка позволяет:
- Как вставить/добавить заданное количество пустых/новых строк в определенные места?
Размер ячейки
Размер ячейки по высоте и ширине определяется высотой строки и шириной столбца, на пересечении которых она находится. Если, в вашем случае, нежелательно изменять размеры всей строки или всего столбца, используйте объединенные ячейки нужной величины.
Обратите внимание, что высота строки задается в пунктах, а ширина столбца в символах, поэтому их числовые значения не соответствуют друг другу по фактическому размеру.
Высота строки и ширина столбца в Excel
Программно, без дополнительных макросов, можно изменять высоту строки только в пунктах, а ширину столбца только в символах.
На сайте поддержки офисных приложений Microsoft так написано об этих величинах:
- высота строки может принимать значение от 0 до 409 пунктов, причем 1 пункт приблизительно равен 1/72 дюйма или 0,035 см;
- ширина столбца может принимать значение от 0 до 255, причем это значение соответствует количеству символов, которые могут быть отображены в ячейке.
Макрос для вставки строк с определенной высотой
В таблице отчета по продажам в розничных точках содержаться объединенные ячейки, как показано ниже на рисунке:
Необходимо экспонировать группы ячеек для каждого штата. Для этого мы добавим по одной пустой строке между каждой группой розничных точек. При этом не имеет значение будет ли содержать группа объединенные ячейки или нет. Ведь некоторые группы состоят из одной строки. А также дополнительно уменьшим высоту этих пустых строк, чтобы внешний вид таблицы был стильным. Выполнить вручную все эти действия: выделение отдельных групп ячеек, вставка между ними пустых строк, а потом изменение высоты для этих же строк – это не рационально использование сил и времени. Особенно если таблица имеет десятки тысяч строк. Лучше написать свой макрос, который сам автоматически и молниеносно выполнит эту рутинную работу за Вас.
Перейдите в режим редактора макросов Visual Basic (ALT+F11):
Создайте в нем новый модуль с помощью инструмента: «Insert»-«Module». А потом запишите в него VBA-код самого макроса:
SubVstavkaStrok()
DimiAs Long
DimpustrokaAs Long
Fori = Selection.Rows.CountTo2Step-1
pustroka = Selection(i, 1).Row + 1
ActiveSheet.Rows(pustroka).Insert xlShiftDown
ActiveSheet.Rows(pustroka).RowHeight = 7
ActiveSheet.Rows(pustroka).Borders(xlInsideVertical). _
LineStyle = xlLineStyleNone
ActiveSheet.Rows(pustroka).Borders(xlEdgeLeft). _
LineStyle = xlLineStyleNone
ActiveSheet.Rows(pustroka).Borders(xlEdgeRight). _
LineStyle = xlLineStyleNone
ActiveSheet.Rows(pustroka).Interior. _
ColorIndex = xlColorIndexNone
i = i - Selection(i, 1).MergeArea.Rows.Count + 1
Next
End Sub
Теперь если мы хотим вставить по одной пустой строке между каждой объединенной и необъединенной ячейкой, которые находиться в столбце A? Тогда а в таблице отчета по продажам выделяем диапазон ячеек A:D18 и запускаем наш макрос выбрав инструмент: «РАЗРАБОТЧИК»-«Код»-«Макросы»-«VstavkaStrok»-«Выполнить». После запуска макроса таблица будет выглядеть как показано на рисунке:
Сначала в коде объявлены две переменные:
- i – переменная выполняет роль счетчика в цикле.
- pustroka – переменная будет хранить в себе очередной номер для каждой строки выделенного диапазона.
В макросе находиться цикл, который запускает целый ряд инструкций для каждой строки в выделенном диапазоне ячеек. Направление цикла идет с нижней строки выделения к верхней.
- В первой инструкции мы присваиваем для переменной pustroka номер строки которая находиться под текущей строкой.
- Следующая инструкция добавляет пустую строку с высотой в 7 пикселей.
- Удаляются в добавленной строке все вертикальные границы, а также заливка.
- Уменьшается значение переменной i на количество строк, которые охватывает текущая объединенная ячейка, находящаяся в первом столбце выделенного диапазона.
Высота строки
Для изменения высоты строки используйте свойство RowHeight объекта Range. И не важно, будет объект Range представлять из себя выделенный произвольный диапазон, отдельную ячейку, целую строку или целый столбец – высота всех строк, пересекающихся с объектом Range будет изменена после присвоения свойству RowHeight этого объекта нового значения.
Примеры изменения высоты строк:
Пример 1
Изменение высоты отдельной ячейки:
ActiveCell.RowHeight = 10 |
в результате, строка, в которой находится активная ячейка, приобретает высоту, равную 10 пунктам.
Пример 2
Изменение высоты строки:
в результате, третья строка рабочего листа приобретает высоту, равную 30 пунктам.
Пример 3
Изменение высоты ячеек заданного диапазона:
Range(“A1:D6”).RowHeight = 20 |
в результате, каждой из первых шести строк рабочего листа будет задана высота, равная 20 пунктам.
Пример 4
Изменение высоты ячеек целого столбца:
Columns(5).RowHeight = 15 |
в результате, всем строкам рабочего листа будет назначена высота, равная 15 пунктам.
Для того, чтобы вставить несколько новых строк в документ, необходимо выделить строку, выше которой нужно добавить новые строки, и не отпуская левой кнопки мыши выделить столько строк, сколько нужно вставить.
После того как строки выделены, необходимо щелкнуть правой кнопкой мыши на выделенном участке листа и из контекстного меню выбрать пункт «Вставить», либо воспользоваться кнопками во вкладках ленты, аналогично тому, как это описано в предыдущем пункте.
Описание работы
Иногда необходимо вставлять большое количество пустых строк по различным условиям и в ручную этот процесс занимает много времени. Для упрощения данного процесса в функционал надстройки добавлена функция «Вставить пустые строки».
Чтобы воспользоваться функцией перейдите на вкладку «VBA-Excel» в разделе «Ячейки и диапазоны» откройте меню «Вставить», выберите «Вставить пустые строки».
Появится диалоговое окно с выбором опций для вставки строк. Необходимо выбрать опции в соответствии с тем какая стоит задача.
Вставка произвольного количества строк
Для этого в поле «Условие» необходимо выбрать пункт «Вставить N пустых строк»
Для того что бы указать в какую строку вставлять пустые строки нужно в поле «Начиная со строки» указать номер нужной строки.
Это можно сделать двумя способами:
- Вручную ввести номер строки.
- Нажать кнопку «…» расположенную рядом с полем «Начиная со строки», после чего откроется окно выбора строки. Далее нужно выбрать любую ячейку находящуюся в нужной строку и нажать «Ок»
После чего в поле Количество указать сколько пустых строк нужно вставить. И нажать кнопку «Ок»
Например, нужно вставить 5 пустых строк с 7 строки. тогда ввод в диалоговое окно будет выглядеть следующим образом:
Результатом будет:
Вставка строк при изменении значения в столбце
Для этого в поле «Условие» должно быть выбрано «Вставлять по изменению значения в столбце»
В этом режиме пустые строки вставляются в том случае если в выбранном столбце меняется значение.
Для указания столбца, по которому просматриваются значения, нужно в поле «Столбец» ввести имя столбца. Это можно сделать двумя способами:
- Вручную ввести имя столбца
- Нажать кнопку «…» расположенную рядом с полем «Столбец», после чего откроется окно выбора столбца. Далее нужно выбрать любую ячейку находящуюся в нужном столбце и нажать «Ок»
Например, вам нужно отделить каждый новый артикул в столбце А пустой строкой. Тогда диалоговое окно примет вид:
Результат:
Удаление пустых строк
Удаление строк в таблицах Excel уже рассматривалось на страницах этого сайта, удаление же пустых строк является частным случаем удаления строк, следует заметить, что удаление пустых строк, как собственно и их вставку, можно производить программно, при помощи макроса (надстройки). Обо всем этом можно прочитать подробнее.
Надстройка позволяет:
1. Находить пустые ячейки, непустые ячейки, ячейки с заданным цветом заливки, ячейки с заданными числовыми и текстовыми значениями (цифрами, буквами, символами, словами и так далее). Задавать для поиска можно как единичное значение, так и несколько значений, через знак-разделитель “;” (точка с запятой);
2. вставлять заданное количество пустых строк как выше, так и ниже строк с искомым значением;
3. вставлять разное количество пустых строк в зависимости от значения, указанного в заданном столбце;
4. осуществлять вставку новых строк ниже каждой второй, третьей, пятой, n-ной строки выбранного диапазона (шаг задается пользователем);
5. вставлять пустые строки при каждой смене значения в заданном столбце;
6. вставлять пустые строки ниже каждой заполненной ячейки в заданном столбце;
7. задавать диапазон для вставки строк, для этого предусмотрено несколько режимов:
а) используемый диапазон листа — диапазон активного листа, включающий в себя все ячейки, находящиеся между первой заполненной и последней заполненной ячейкой;
б) используемые диапазоны — отличается от предыдущего режима тем, что обработка данных производится в используемом диапазоне каждого листа рабочей книги;
в) диапазон листа — диапазон, который выберет пользователь;
г) диапазоны листов — это одноименные диапазоны на всех листа рабочей книги.
*Внимательно выбирайте диапазон для получения желаемого результата!
8. выбирать необходимые условия для значений ячеек.
Для числовых значений: равно/не равно, больше/не больше, меньше/не меньше.
Для текстовых значений: совпадает/не совпадает, содержит/не содержит, начинается/не начинается, заканчивается/не заканчивается.
Я написал макрос, который ищет столбец для ячейки, которая содержит текст “AddCompany”, а затем для каждой такой ячейки, вставляет новую строку в другой лист, а затем копирует и вставляет значение смежной ячейки (которая содержит имя компании) в эту новую строку.
В моей копии я использую составленные имена в ячейках “Test Company 1” через “Test Company 4” для проверки макроса. Макрос правильно вставляет 4 новые строки, но только последняя компания “Test Company 4” вставлена. И он вставляется в неправильную ячейку, в строке непосредственно под вновь вставленными строками.
Конечным результатом является то, что макрос вставляет строки с 9 по 12 и вставляет “Test Company 4” в строку 13, которая уже содержит имя (которое я не хочу менять).
Я хочу, чтобы макрос делал это, чтобы вставить “новую” строку (просто будет 9-я строка в этом случае, чтобы она поместилась в большую таблицу) для каждой найденной “AddCompany”, затем вставьте название компании в соседнюю ячейку, и повторить до завершения. Вновь вставленные строки с 9 по 12 должны отображать каждую тестовую компанию в конце.
Как вставить/добавить заданное количество пустых/новых строк в определенные места?
Стандартными средствами Excel такую задачу решить можно не всегда, но не будем забывать про то, что существует такой мощный инструмент как VBA, позволяющий автоматизировать повторяющиеся однотипные действия. По инструкции устанавливается в приложение Excel надстройка для вставки пустых строк, которая предоставляет следующие возможности:
1. Выбор искомого значения, которым могут являться пустые ячейки, непустые ячейки, ячейки с заданным цветом заливки, ячейки с заданным числом, а также ячейки с заданным текстом (быквы, символы);
2. вставка заданного количества пустых строк как выше, так и ниже строк с искомым значением;
3. вставка разного количества пустых строк в зависимости от значения, указанного в заданном столбце;
4. вставка новых строк ниже каждой второй, третьей, пятой, n-ной строки выбранного диапазона (шаг задается пользователем);
5. вставлять пустые строки при каждой смене значения в заданном столбце;
6. вставлять пустые строки между заполненными (после каждой заполненной ячейки в столбце с заданным номером);
7. выбор диапазонов для вставки строк, предусмотрено несколько режимов:
а) используемый диапазон листа – диапазон активного листа, включающий в себя все ячейки, находящиеся между первой заполненной и последней заполненной ячейкой;
б) используемые диапазоны – отличается от предыдущего режима тем, что обработка данных производится в используемом диапазоне каждого листа рабочей книги;
в) диапазон листа – диапазон, который выберет пользователь;
г) диапазоны листов – это одноименные диапазоны на всех листа рабочей книги.
*Внимательно выбирайте диапазон для получения желаемого результата!
8. выбор необходимых условий для значений ячеек.
Для числовых значений: равно/не равно, больше/не больше, меньше/не меньше.
Для текстовых значений: совпадает/не совпадает, содержит/не содержит, начинается/не начинается, заканчивается/не заканчивается.
Программа выполняет проверку всех ячеек заданного диапазона и при выполнении выбранного условия вставляет нужное пользователю количество пустых строк над/под строкой (на выбор), содержащей ячейку с заданным значением. На выбор пользователя представлено множество условий для значений ячеек, с помощью которых можно определить места для вставки новых строк, а также предоставлен выбор диапазонов для обработки данных. Для большей гибкости поиск ячеек с нужными значениями можно осуществлять раздельно, как по текстовым значениям ячеек, так и по числовым. Предусмотрен также поиск как пустых, так и непустых ячеек. Этот макрос позволяет также добавлять новые строки в заданном количестве в каждую n-ую строку выбранного диапазона. Если, к примеру, вставить по две пустые строки ниже каждой второй строки диапазона А2:А24, т ополучим следующий результат:
Источники
- https://vremya-ne-zhdet.ru/vba-excel/razmer-yacheyki-vysota-stroki-shirina-stolbtsa-avtopodbor/
- https://exceltable.com/vba-macros/makros-dlya-dobavleniya-strok
- http://macros-vba.ru/nadstrojki/excel/105-kak-vstavit-dobavit-udalit-novye-pustye-stroki
- https://micro-solution.ru/projects/addin_vba-excel/insert_rows
- https://9726552.ru/makros-vstavit-stroku-posle-stroki-so-znachenijami/
Добрый день!
Возник вопрос, связанный с темой
задача следующего плана, нужно вставить некоторое кол-во строк в зависимости от значения в ячейках колонки А
например
1 — вставить ниже 1 строку
4 — вставить ниже к строки
0 — ничего не менять
спасибо
Вот как пример в ячейку I3 надо писать кол-во строк.
ничего не понял из этого файла, нужно не из одной ячейки сделать вставку и перебрать диапазон
ну я и написал что вот как пример, а как сделать в VBA не знаю.
Цитата: iron priest от 30.05.2012, 11:52
задача следующего плана, нужно вставить некоторое кол-во строк в зависимости от значения в ячейках колонки А
Вот рецепт:
Sub SHD_AddRows()
LR = Cells(Rows.Count, 1).End(xlUp).Row
For i = LR To 1 Step -1
If Val(Cells(i, 1)) > 0 Then
Rows(i + 1 & ":" & i + Cells(i, 1)).Insert
End If
Next
End Sub
Знания недостаточно, необходимо применение. Желания недостаточно, необходимо действие. (с) Брюс Ли
Цитата: Шпец Докапыч от 31.05.2012, 15:37
Цитата: iron priest от 30.05.2012, 11:52
задача следующего плана, нужно вставить некоторое кол-во строк в зависимости от значения в ячейках колонки АВот рецепт:
Sub SHD_AddRows()
LR = Cells(Rows.Count, 1).End(xlUp).Row
For i = LR To 1 Step -1
If Val(Cells(i, 1)) > 0 Then
Rows(i + 1 & ":" & i + Cells(i, 1)).Insert
End If
Next
End Sub
А как сделать что бы из другой колонки брал?
Может как то так
Option Explicit
Sub SHD_AddRows()
Dim ColN As Integer, LR As Long, i As Long
ColN = 3 'номер колонки для поиска количества строк
LR = Cells(Rows.Count, ColN).End(xlUp).Row 'Определяем номер последней строки
For i = LR To 1 Step -1 'Идем цыклом снизу вверх чтоб не вызвать зацыкливания
If Val(Cells(i, ColN)) > 0 Then 'проверяем значение из ячейки на условие больше нуля
Rows(i + 1 & ":" & i + Cells(i, ColN)).Insert 'вставляем строки
End If
Next
End Sub
Прошу прощения у Шпец Докапыч, а то влез тут со своими комментариями в его интеллектуальную собственность
Не пытайтесь спорить с дебилом. Иначе вы опуститесь до его уровня. Где он задавит вас своим опытом.
Цитата: Poltava от 31.05.2012, 22:12
Может как то такOption Explicit
Sub SHD_AddRows()
Dim ColN As Integer, LR As Long, i As Long
ColN = 3 'номер колонки для поиска количества строк
LR = Cells(Rows.Count, ColN).End(xlUp).Row 'Определяем номер последней строки
For i = LR To 1 Step -1 'Идем цыклом снизу вверх чтоб не вызвать зацыкливания
If Val(Cells(i, ColN)) > 0 Then 'проверяем значение из ячейки на условие больше нуля
Rows(i + 1 & ":" & i + Cells(i, ColN)).Insert 'вставляем строки
End If
Next
End Sub
Прошу прощения у Шпец Докапыч, а то влез тут со своими комментариями в его интеллектуальную собственность
Еще одна нескромная просьба, можно сделать так что бы он работал в двух режимах, удалял строки и добавлял строки согласно цифрам в столбце, то что делал целый день с помощью этого кода сделал за 40 минут
А как это должно быть макрос проверяет и если числа отрицательные удаляет, либо два разных макроса один удаляет другой добавляет и тут уже без отрицательных чисел можно. либо макрос будет вызываться из другой процедуры и при вызове в качестве параметра будет идти добавлять или удалять строки
Да и вообще удаление строк это более ответственный процесс! тут нужно понимать что делать если в удаляемой строке есть информация либо если удалить нужно строки которые дальше могли использоваться в общем тут больше проверок нужно о которых только вы знаете.
Ну а в общем случае попробуйте заменить .Insert на .Delete
Не пытайтесь спорить с дебилом. Иначе вы опуститесь до его уровня. Где он задавит вас своим опытом.
Цитата: Poltava от 01.06.2012, 11:17
А как это должно бытьмакрос проверяет и если числа отрицательные удаляет, либо два разных макроса один удаляет другой добавляет и тут уже без отрицательных чисел можно. либо макрос будет вызываться из другой процедуры и при вызове в качестве параметра будет идти добавлять или удалять строки
Да и вообще удаление строк это более ответственный процесс! тут нужно понимать что делать если в удаляемой строке есть информация либо если удалить нужно строки которые дальше могли использоваться в общем тут больше проверок нужно о которых только вы знаете.
Ну а в общем случае попробуйте заменить .Insert на .Delete
Ну можно просто сделать два макроса один прибавляет другой удаляет, числа положительные.Нужно затем , что таблица сводная меняется постоянно и ,что бы не корячится с удалением и добавлением легче сделать через макрос. С .Delete, работает вроде в противоположную сторону как .Insert так что всё пучком! Всем спасибо кто откликнулся, сильно облегчили труд.
7 / 7 / 1 Регистрация: 02.03.2011 Сообщений: 307 |
||||||||||||||||||||||||||||||||||||||||||||||||
1 |
||||||||||||||||||||||||||||||||||||||||||||||||
Добавление строк по условию27.06.2021, 14:05. Показов 4811. Ответов 11
Приветствую!
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
27.06.2021, 14:05 |
11 |
1232 / 670 / 238 Регистрация: 22.12.2015 Сообщений: 2,089 |
|
27.06.2021, 14:33 |
2 |
xxxspeed, отфильтруйте фильтром по строке «кол-во» и скопируйте отфильтрованные значения на новый лист путем обычного выделить-копировать-вставить.
0 |
7 / 7 / 1 Регистрация: 02.03.2011 Сообщений: 307 |
|
27.06.2021, 14:35 [ТС] |
3 |
Это понятно, мне просто нужно автоматом, что б все делалось. Я написал формулы, чтоб на втором листе данные сразу отображались, но они отображаются в тех же строках.
0 |
Dinoxromniy 1232 / 670 / 238 Регистрация: 22.12.2015 Сообщений: 2,089 |
||||
27.06.2021, 14:46 |
4 |
|||
Либо если есть вариант с авто сортировкой, при изменении таблица автоматически заново сортируется. Сложно сказать — кроме вас вашу таблицу никто видел.
Только если вы вручную вбиваете новые данные — начинайте с 4 столбца — который «количество», иначе таблица скроет новую строчку раньше, чем вы успеете ввести все ячейки строки. С копированием проблем быть не должно.
1 |
7 / 7 / 1 Регистрация: 02.03.2011 Сообщений: 307 |
|
27.06.2021, 15:48 [ТС] |
5 |
Сложно сказать — кроме вас вашу таблицу никто видел. Краткий фрагмент таблицы я опубликовал. С листа прайс на второй лист данные я переношу формулой =ЕСЛИ(Прайс!$D2=»»;»»;Прайс!A2). Код работает, я его добавил на второй лист. Единственное, нужно на втором листе сделать любое изменение, чтоб код сработал. Добавлено через 12 минут
0 |
5942 / 3154 / 698 Регистрация: 23.11.2010 Сообщений: 10,524 |
|
27.06.2021, 16:11 |
6 |
Краткий фрагмент таблицы я опубликовал это картинка, тут даже названий столбцов не видно, это к тому
при изменении колонки D
0 |
7 / 7 / 1 Регистрация: 02.03.2011 Сообщений: 307 |
|
27.06.2021, 16:23 [ТС] |
7 |
это картинка, тут даже названий столбцов не видно, это к тому Верно подмечено, извиняюсь.
0 |
7 / 7 / 1 Регистрация: 02.03.2011 Сообщений: 307 |
|
27.06.2021, 16:27 [ТС] |
8 |
Вот файл, но без кода
0 |
7 / 7 / 1 Регистрация: 02.03.2011 Сообщений: 307 |
|
27.06.2021, 16:31 [ТС] |
9 |
Вот файл.
0 |
xxxspeed 7 / 7 / 1 Регистрация: 02.03.2011 Сообщений: 307 |
||||
27.06.2021, 16:53 [ТС] |
10 |
|||
Вопрос вроде решился, разобрался.
0 |
1232 / 670 / 238 Регистрация: 22.12.2015 Сообщений: 2,089 |
|
29.06.2021, 10:08 |
11 |
xxxspeed, прошу прощения — руки не дошли написать.
0 |
xxxspeed 7 / 7 / 1 Регистрация: 02.03.2011 Сообщений: 307 |
||||||||||||
29.06.2021, 21:59 [ТС] |
12 |
|||||||||||
Ваше решение оптимально Вот еще решение которое мне подсказали
Подскажите только как изменить путь к листу в
,
чтоб копировал данные в другой файл. Но в том решении есть свой плюс. Остаются рамки в таблице
0 |