Note: The other languages of the website are Google-translated. Back to English

Как дублировать строки на основе значения ячейки в столбце?

Например, у меня есть диапазон данных, который содержит список чисел в столбце D, и теперь я хочу несколько раз продублировать все строки на основе числовых значений в столбце D, чтобы получить следующий результат. Как я мог скопировать строки несколько раз на основе значений ячеек в Excel?

doc повторяющиеся строки по ячейке 1

Повторяющиеся строки несколько раз на основе значений ячеек с кодом VBA


стрелка синий правый пузырь Повторяющиеся строки несколько раз на основе значений ячеек с кодом VBA

Чтобы скопировать и дублировать целые строки несколько раз на основе значений ячеек, вам может помочь следующий код VBA, сделайте следующее:

1. Удерживайте ALT + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Модулии вставьте следующий код в Модули Окно.

Код VBA: повторяющиеся строки несколько раз в зависимости от значения ячейки:

Sub CopyData()
'Updateby Extendoffice
    Dim xRow As Long
    Dim VInSertNum As Variant
    xRow = 1
    Application.ScreenUpdating = False
    Do While (Cells(xRow, "A") <> "")
        VInSertNum = Cells(xRow, "D")
        If ((VInSertNum > 1) And IsNumeric(VInSertNum)) Then
           Range(Cells(xRow, "A"), Cells(xRow, "D")).Copy
           Range(Cells(xRow + 1, "A"), Cells(xRow + VInSertNum - 1, "D")).Select
           Selection.Insert Shift:=xlDown
           xRow = xRow + VInSertNum - 1
        End If
        xRow = xRow + 1
    Loop
    Application.ScreenUpdating = False
End Sub

3, Затем нажмите F5 ключ для запуска этого кода, целые строки были дублированы несколько раз на основе значения ячейки в столбце D по мере необходимости.

Внимание: В приведенном выше коде буква A обозначает начальный столбец диапазона данных, а буква D - буква столбца, на основе которой вы хотите продублировать строки. Пожалуйста, измените их по своему усмотрению.


Лучшие инструменты для работы в офисе

Kutools for Excel решает большинство ваших проблем и увеличивает вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма ...
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон...
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы... Предотвращение дублирования ячеек; Сравнить диапазоны...
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор ...
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое ...
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии...
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом ...
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF...
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
вкладка kte 201905

Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
офисный дно
Сортировать комментарии по
Комментарии (41)
Оценок пока нет. Оцените первым!
Этот комментарий был сведен к минимуму модератором на сайте
Это сработало отлично. Что бы я добавил в ваш код, чтобы все строки с «0» исчезли? Мы используем это для этикеток SKU. Спасибо за отличное решение!
Этот комментарий был сведен к минимуму модератором на сайте
Я тебя люблю. Спасибо.
Этот комментарий был сведен к минимуму модератором на сайте
Благодарю вас! строки 10 и 11 «D» указывают на конец строки, и это может потребоваться изменить на ваш диапазон данных, чтобы он работал.
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуйте,
Кто-нибудь знает горячее преобразование этого кода VBA в сценарии Google Apps (таблицы Google)?
Этот комментарий был сведен к минимуму модератором на сайте
Я использовал приведенный выше код, который отлично работает, но мне нужен еще один шаг после вставки строки. Я просто не могу заставить его работать должным образом. Мне нужно, чтобы поместить ноль в столбец «N» в строке после его вставки, но сохранить значение в «N» в исходной скопированной строке.


Sub CopyData ()
'Обновить Extendoffice 20160922
Dim xRow As Long
Dim VInSertNum как вариант
хряд = 1
Приложение.ScreenUpdating = False
Делать пока (ячейки (xRow, "A") <> "")
VInSertNum = Ячейки (xRow, "J")
Если ((VInSertNum > 1) И IsNumeric(VInSertNum)) Тогда
Диапазон(Ячейки(xRow, "A"), Ячейки(xRow, "AN")).Копировать
' Cells(xRow, 14).Value = 0 это сделало все строки
Диапазон (Ячейки (xRow + 1, "A"), Ячейки (xRow + VInSertNum - 1, "AN")). Выберите
'Ячейки (xRow, 14). Значение = 0
'это сделал все строки
Selection.Insert Shift: = xlDown
' Cells(xRow, 14).Value = 0 это только первая строка
xRow = xRow + VInSertNum - 1
'Ячейки (xRow - 1, 14). Значение = 0
End If
' Ячейки (xRow - 1, 14). Значение = 0
xСтрока = xСтрока + 1
' Ячейки (xRow + 1, 14). Значение = 0
Петля
'Cells(xRow, 14).Value = 0 это не делало строк
Приложение.ScreenUpdating = False
End Sub
Этот комментарий был сведен к минимуму модератором на сайте
Привет, Стив, ты смог это сделать? мое требование примерно такое же :(
Этот комментарий был сведен к минимуму модератором на сайте
Привет ребята,
Возможно, статья ниже поможет вам, пожалуйста, проверьте ее:
https://www.extendoffice.com/documents/excel/3682-excel-copy-and-insert-row-multiple-times.html
Этот комментарий был сведен к минимуму модератором на сайте
Знаете ли вы, какой код будет дублировать строку только один раз, основываясь на том, если, скажем, ячейка d содержит «Да»?
Этот комментарий был сведен к минимуму модератором на сайте
Итак, я использую этот код, но я хочу, чтобы он искал весь документ, а не только строку 1 или что-то еще, указанное xRow = 1. Я пытаюсь указать диапазон 1: 2000, но это не работает. Как я могу идентифицировать xRow = любую строку на листе, содержащую информацию, которую я идентифицирую в приведенном ниже коде?


Dim xRow As Long
Значение затемнения как вариант


xСтрока = 1: 2000

Приложение.ScreenUpdating = False
Делать пока (ячейки (xRow, "A") <> "")
Значение = ячейки (xRow, "D")
Значение2 = ячейки (xRow, "A")
Если Нет ((Значение = "allegheny general") И IsNumeric(Value2 = G0202)) Тогда
Диапазон(Ячейки(xRow, "A"), Ячейки(xRow, "D")).Копировать
Диапазон (Ячейки (xRow + 1, "A"), Ячейки (xRow + 1, "D")). Выбрать
Selection.Insert Shift: = xlDown
xСтрока = xСтрока + 1
End If
xСтрока = xСтрока + 1
Петля
Приложение.ScreenUpdating = False
End Sub
Этот комментарий был сведен к минимуму модератором на сайте
Привет, это сработало отлично. Однако у меня есть отчет с 1000 записями, и код перестал дублироваться около записи 480. Можно ли что-то добавить, чтобы он выполнял действие для всего отчета?
Этот комментарий был сведен к минимуму модератором на сайте
Привет, Лия,
Я протестировал код в 2000 строк, и он работает хорошо.
Не могли бы вы прислать мне свой рабочий лист для тестирования кода?
Мой адрес электронной почты: skyyang@extendoffice.com
С нетерпением ждем вашего ответа!
Этот комментарий был сведен к минимуму модератором на сайте
Привет! Я заставил его работать. Это была ошибка с моей стороны, в отчете было несколько пустых строк, которые были скрыты, из-за чего скрипт перестал зацикливаться. Это сработало для моего отчета с 8,000 строками! СпасибоQ
Этот комментарий был сведен к минимуму модератором на сайте
Привет Лия и Скайян,
У меня похожая проблема - скрипт отлично работает на листе около 100 строк, но перестает работать для чего-то большего. Я проверил наличие пустых строк в столбце, откуда берется число умножения, и их нет. Есть ли другие причины, по которым скрипт может не работать для больших наборов данных?
Этот комментарий был сведен к минимуму модератором на сайте
Спасибо! это было отличное решение для всех моих проблем!
Этот комментарий был сведен к минимуму модератором на сайте
Этот скрипт кажется именно тем, что мне нужно, однако, когда я его запускаю, я получаю сообщение об ошибке в строке Selection.Insert Shift:=x1Down

Любые предложения о том, как я это исправить?
Этот комментарий был сведен к минимуму модератором на сайте
привет, у меня не работает, я хочу удалить буквы и возможно дублирование цифр?
Этот комментарий был сведен к минимуму модератором на сайте
Есть ли способ обновить модуль, чтобы дублировать только новые данные? Я работаю над текущим документом и не хочу, чтобы код дублировал ранее дублированные данные.
Этот комментарий был сведен к минимуму модератором на сайте
есть ли способ добавить к каждой повторяющейся ячейке последовательные символы? пример
КТЭ+0001

КТЭ+0002
Этот комментарий был сведен к минимуму модератором на сайте
Прекрасный! Спасибо. Интересно, может ли кто-нибудь подсказать, как включить в таблицу новый столбец информации (столбец E), который представляет собой число увеличивающихся значений для каждой скопированной строки, 1, 2, 3, 4 и т. д.... а затем когда он доберется до следующего элемента, который будет дублироваться X раз, он снова начнет нумерацию с 1 и каждый раз будет увеличиваться на 1.
Этот комментарий был сведен к минимуму модератором на сайте
Привет, я пробовал это, но есть ли способ рассмотреть, есть ли несколько критериев с данными, которые я дублирую
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуйте,

Я создаю электронную таблицу, используя предоставленную формулу, но у меня есть ошибки. пожалуйста, может кто-нибудь сообщить мне, какой должна быть моя формула?

моя таблица от AY с количеством в K.
Этот комментарий был сведен к минимуму модератором на сайте
привет, я пытался настроить этот код, но возникли трудности.
у меня есть предметы инвентаря. каждый элемент состоит из двух строк и хочет, чтобы они дублировались N раз
в верхней части электронной таблицы у меня есть ячейка, назовем ее A1, сколько раз она дублируется? Н
каким бы ни было значение N, я хочу дублировать исходный элемент инвентаря, который у меня есть (A16, A17), столько раз.
поэтому скопированный элемент должен начинаться с A18 (и это две строки, следующий элемент с a20 и т. д.
Спасибо
Этот комментарий был сведен к минимуму модератором на сайте
Привет, код работает отлично. Я также хотел добавить +1 к дате (только в будние дни) каждый раз, когда строка дублируется.
Этот комментарий был сведен к минимуму модератором на сайте
Большое спасибо! Это сэкономило мне столько времени, что я тратил время на копирование и вставку всех своих строк данных.
Два больших пальца вверх!!
Этот комментарий был сведен к минимуму модератором на сайте
Отличный код!!! Спасибо!!!
Здесь еще нет комментариев
Загрузить ещё
Оставляйте свои комментарии
Публикация как гость
×
Оценить этот пост:
0   Характеристики
Предлагаемые места

Подписывайтесь на Нас

Copyright © 2009 - www.extendoffice.ком. | Все права защищены. Питаться от ExtendOffice, | Карта сайта
Microsoft и логотип Office являются товарными знаками или зарегистрированными товарными знаками Microsoft Corporation в США и / или других странах.
Защищено Sectigo SSL