2010-01-21 12 views
1

Je feuille Excel avec N + 1 lignes où la colonne A a id unique N.excel - comment dupliquer chaque ligne avec une macro

Je dois dupliquer chaque ligne de sorte qu'en dessous d'une rangée N, il y aura trois nouvelles lignes avec des identifiants uniques Nb, Nc, Nd

lignes d'entrée d'échantillon:

id1 data here 
id2 data2 here 

par exemple. Exemple de sortie:

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 

Répondre

5

Vous pouvez essayer quelque chose comme ça

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 Souvent, lors de l'ajout ou de la suppression de lignes/colonnes dans une plage, il est plus facile de commencer avec la dernière ligne/colonne et de revenir en arrière. Dans ce cas, cela simplifierait la façon de déterminer où 'insertRow' et' copiedRow' devraient être – barrowc

0

Si je dois savoir comment faire quelque chose en utilisant VBA, la meilleure façon de le savoir est de le faire manuellement et enregistrer mes actions dans une macro. C'est alors généralement une procédure simple pour éditer la macro à mes besoins précis.

+0

Salut Mick, c'est vraiment un bon conseil, mais pas une réponse. Je me demande si cela aurait dû être un commentaire? –

0

Je voulais simplement dupliquer les lignes sans le trait d'union à la fin de chaque élément de données copiées donc j'omis la dernière ligne du code

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

Il a parfaitement dupliqué les lignes, merci.

Questions connexes