2010-01-21 5 views
1

У меня есть Excel лист с N + 1 строк, где Колонка A имеет уникальный идентификатор N.Excel - как дублировать каждую строку с макро

мне нужно, чтобы дублировать каждую строку так, чтобы ниже строки N будет три новые ряды с уникальными идентификаторами Nb, Nc, Nd

eg входные ряды образцов:

id1 data here 
id2 data2 here 

, например. Пример результата:

id1 data here 
id1-b data here 
id1-c data here 
id1-d data here 
id2 data2 here 
id2-b data2 here 
id2-c data2 here 
id2-d data2 here 

ответ

5

Вы могли бы попробовать что-то вроде этого

Sub Macro1() 
Dim sheet As Worksheet 
Dim usedRange As Range 

    Set sheet = ActiveSheet 
    Set usedRange = sheet.usedRange 

Dim i As Integer 

    For i = 1 To usedRange.Rows.Count 
     Dim row As Range 
     Set row = usedRange.Rows(((i - 1) * 4) + 1) 

     Dim iCopy As Integer 

     For iCopy = 1 To 3 
      row.Copy 
      Dim insertRow As Range 
      Set insertRow = usedRange.Rows(((i - 1) * 4) + 1 + iCopy) 
      insertRow.insert xlDown 
      Dim copiedRow As Range 
      Set copiedRow = usedRange.Rows(((i - 1) * 4) + 1 + iCopy) 
      copiedRow.Cells(1, 1) = copiedRow.Cells(1, 1) & "-" & Chr(97 + iCopy) 

     Next iCopy 
    Next i 
End Sub 
+0

+1 Часто при добавлении или удалении строк/столбцов в «Диапазоне» легче начать с последней строки/столбца и работать назад. В этом случае это упростит, как определить, где 'insertRow' и' copiedRow' должны быть – barrowc

0

Если мне нужно знать, как сделать что-то с помощью VBA, самый простой способ выяснить это, чтобы сделать это вручную и записывать свои действия в макрос. Это обычно простая процедура для редактирования макроса для моих точных требований.

+0

Привет, Мик, это действительно хороший совет, но не ответ. Интересно, должен ли это быть комментарий? –

0

Я хотел просто дублировать строки без дефиса в конце каждого скопированного элемента данных, поэтому я опустил последнюю строку кода

«copiedRow .Cells (1, 1) = copiedRow.Cells (1, 1) & "-" & Chr (97 + iCopy)

Он дублирует строки отлично, спасибо.

Смежные вопросы