如何在Excel中自动创build行的副本?

我有一个看起来像这样的excel文件:
row1_cell1 row1_cell2 row1_cell3
row2_cell1 row2_cell2 row2_cell3
row3_cell1 row3_cell2 row3_cell3

我怎样才能使三(或任意数量)的每一行的副本,我有工作表中,我想在行被复制后添加? 所以,最后我想有这样一个结果:
row1_cell1 row1_cell2 row1_cell3
row1_cell1 row1_cell2 row1_cell3
row1_cell1 row1_cell2 row1_cell3
row2_cell1 row2_cell2 row2_cell3
row2_cell1 row2_cell2 row2_cell3
row2_cell1 row2_cell2 row2_cell3
row3_cell1 row3_cell2 row3_cell3
row3_cell1 row3_cell2 row3_cell3
row3_cell1 row3_cell2 row3_cell3

这是我将如何做到这一点在工作表上的所有行:

Option Explicit Sub MultiplyRows() Dim RwsCnt As Long, LR As Long, InsRw As Long RwsCnt = Application.InputBox("How many copies of each row should be inserted?", "Insert Count", 2, Type:=1) If RwsCnt = 0 Then Exit Sub LR = Range("A" & Rows.Count).End(xlUp).Row Application.ScreenUpdating = False For InsRw = LR To 1 Step -1 Rows(InsRw).Copy Rows(InsRw + 1).Resize(RwsCnt).Insert xlShiftDown Next InsRw Application.ScreenUpdating = True End Sub 

没有一种直接的方法来将它们交错粘贴,就像你想要的那样。 但是,您可以创build一个临时VBA来执行您想要的操作。

例如,您可以: –

  1. 在Excel文件中创build一个VBA过程(如下所示)。
  2. 给它分配一个键盘快捷键(例如Ctrl + Q)。
    • 为此,请按Alt + F8,然后selectmacros,然后单击“选项”。
  3. select要复制的单元格,然后按Ctrl + C。
  4. select您想要粘贴的单元格,然后按Ctrl + Q(或您select的任何键盘快捷键)。
  5. input您想要复制的次数。 (在你的例子中,这将是3)
  6. WHAMMO! :d
  7. 现在您可以删除VBA程序。 🙂

VBA代码:

 Sub PasteAsInterleave() Dim startCell As Range Dim endCell As Range Dim firstRow As Range Dim pasteCount As Long Dim rowCount As Long Dim colCount As Long Dim i As Long Dim j As Long Dim inputValue As String If Application.CutCopyMode = False Then Exit Sub 'Get number of times to copy. inputValue = InputBox("Enter number of times to paste interleaved:", _ "Paste Interleave", "") If inputValue = "" Then Exit Sub 'Cancelled by user. On Error GoTo Error pasteCount = CInt(inputValue) If pasteCount <= 0 Then Exit Sub On Error GoTo 0 'Paste first set. ActiveSheet.Paste If pasteCount = 1 Then Exit Sub 'Get pasted data information. Set startCell = Selection.Cells(1) Set endCell = Selection.Cells(Selection.Cells.count) rowCount = endCell.Row - startCell.Row + 1 colCount = endCell.Column - startCell.Column + 1 Set firstRow = Range(startCell, startCell.Offset(0, colCount - 1)) 'Paste everything else while rearranging rows. For i = rowCount To 1 Step -1 firstRow.Offset(i - 1, 0).Copy For j = 1 To pasteCount startCell.Offset(pasteCount * i - j, 0).PasteSpecial Next j Next i 'Select the pasted cells. Application.CutCopyMode = False Range(startCell, startCell.Offset(rowCount * pasteCount - 1, colCount - 1)).Select Exit Sub Error: MsgBox "Invalid number." End Sub