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. Клацання Insert > Модуліта вставте наступний код у Модулі Вікно

Код 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 для Excel вирішує більшість ваших проблем і збільшує продуктивність на 80%

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

Вкладка Office забезпечує інтерфейс з вкладками для Office і значно спрощує вашу роботу

  • Увімкніть редагування та читання на вкладках у Word, Excel, PowerPoint, Publisher, Access, Visio та Project.
  • Відкривайте та створюйте кілька документів на нових вкладках того самого вікна, а не в нових вікнах.
  • Збільшує вашу продуктивність на 50% та зменшує сотні клацань миші для вас щодня!
дно офісної таблиці
Коментарі (41)
Поки немає оцінок. Оцініть першим!
Цей коментар був мінімізований модератором на сайті
Це чудово спрацювало. Що б я додав до вашого коду, щоб усі рядки з «0» зникли? Ми використовуємо це для етикеток SKU. Дякую за чудове рішення!
Цей коментар був мінімізований модератором на сайті
Я тебе люблю. Дякую.
Цей коментар був мінімізований модератором на сайті
Дякую! рядки 10 і 11 "D" вказують на кінець рядка, і це може знадобитися змінити на діапазон даних, щоб він працював.
Цей коментар був мінімізований модератором на сайті
привіт,
Хтось знає, як швидко конвертувати цей код VBA у скрипти Google Apps (таблички Google)?
Цей коментар був мінімізований модератором на сайті
Я використав код вище, який чудово працює, але мені потрібен ще один крок після того, як рядок буде вставлено. Я просто не можу змусити його працювати належним чином. Мені потрібно поставити нуль у стовпець "N" у рядку після його вставки, але зберегти значення в "N" у вихідному скопійованому рядку.


Додаткові дані копіювання()
'Оновлення Extendoffice 20160922
Dim xRow As Long
Dim VInSertNum як варіант
xРяд = 1
Application.ScreenUpdating = Невірний
Робити в той час як (Cells(xRow, "A") <> "")
VInSertNum = клітинки (xRow, "J")
Якщо ((VInSertNum > 1) і IsNumeric(VInSertNum)), то
Діапазон(Cells(xRow, "A"), Cells(xRow, "AN")).Копіювати
' Клітинки(xRow, 14).Значення = 0, це стосується всіх рядків
Діапазон(Cells(xRow + 1, "A"), Cells(xRow + VInSertNum - 1, "AN")).Вибрати
'Cells(xRow, 14).Значення = 0
'Це зробили всі рядки
Selection.Insert Shift:=xlDown
' Cells(xRow, 14).Значення = 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).Значення = 0 рядків не було
Application.ScreenUpdating = Невірний
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
Dim Value як варіант


xРяд = 1: 2000

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

Будь-які пропозиції, як це виправити?
Цей коментар був мінімізований модератором на сайті
привіт, у мене не працює, я хочу видалити букви та цифри, які дублюються?
Цей коментар був мінімізований модератором на сайті
Чи є спосіб оновити модуль, щоб лише дублювати нові дані? Я працюю над поточним документом і не хочу, щоб код дублював дані, які раніше дублювалися.
Цей коментар був мінімізований модератором на сайті
чи можна додати до кожної повторюваної клітинки послідовні символи? приклад
KTE+0001

KTE+0002
Цей коментар був мінімізований модератором на сайті
Прекрасно! Дякую. Цікаво, чи може хтось дати підказку, як я міг би включити новий стовпець інформації в таблицю (стовпець E), який є числом зростаючого значення для кожного скопійованого рядка, 1, 2, 3, 4 тощо... а потім коли він дійде до наступного елемента, який буде продубльований X разів, він знову почне нумеруватись із 1 і щоразу збільшуватися на 1.
Цей коментар був мінімізований модератором на сайті
Привіт, я спробував це, але чи є спосіб розглянути, чи є кілька критеріїв із даними, які я дублюю
Цей коментар був мінімізований модератором на сайті
привіт,

Я створюю електронну таблицю за наданою формулою, але я маю помилки. будь ласка, хтось може підказати мені, якою має бути моя формула?

моя таблиця з AY з кількостями в K.
Цей коментар був мінімізований модератором на сайті
привіт, я намагався налаштувати цей код, але виникли труднощі.
у мене є інвентар. кожен елемент складається з двох рядків. і потрібно, щоб вони дублювалися N кількість разів
у верхній частині електронної таблиці у мене є клітинка, назвемо її A1, скільки разів я дублюю? Н
Незалежно від значення N, я хочу продублювати початковий елемент інвентарю, який у мене є (A16, A17), стільки разів.
тому скопійований елемент повинен починатися з A18 (і це два рядки, наступний елемент a20 тощо.
Дякую
Цей коментар був мінімізований модератором на сайті
Привіт, код працює чудово. Я також хотів додавати +1 до дати (лише будні) щоразу, коли рядок дублюється.
Цей коментар був мінімізований модератором на сайті
Дуже дякую! Це заощадило мені стільки часу, що я витрачав на копіювання та вставлення всіх своїх рядків даних.
Два пальці вгору!!
Цей коментар був мінімізований модератором на сайті
Чудовий фрагмент коду!!! Дякую!!!
There are no comments posted here yet
Load More
Будь ласка, залишайте свої коментарі англійською мовою
Публікація як гість
×
Оцініть цю публікацію:
0   Персонажі
Рекомендовані місця

Слідуй за нами

Copyright © 2009 - WWW.extendoffice.com. | Всі права захищені. На основі ExtendOffice. | Карта сайту
Microsoft та логотип Office є товарними знаками або зареєстрованими товарними знаками Microsoft Corporation у США та / або інших країнах.
Захищений Sectigo SSL