复制excel数据行

时间:2012-07-18 16:35:09

标签: excel duplicates rows

此宏适用于根据特定列中的整数值复制行。如何让它也复制原始数据的格式?

Sub DuplicateRows()

Dim currentRow As Integer
Dim currentNewSheetRow As Integer: currentNewSheetRow = 1

For currentRow = 1 To 3 'The last row of your data

    Dim timesToDuplicate As Integer
    timesToDuplicate = CInt(Sheet1.Range("D" & currentRow).Value2)

    Dim i As Integer
    For i = 1 To timesToDuplicate

        Sheet2.Range("A" & currentNewSheetRow).Value2 = Sheet1.Range("A" & currentRow).Value2
        Sheet2.Range("B" & currentNewSheetRow).Value2 = Sheet1.Range("B" & currentRow).Value2
        Sheet2.Range("C" & currentNewSheetRow).Value2 = Sheet1.Range("C" & currentRow).Value2

        currentNewSheetRow = currentNewSheetRow + 1

    Next i

Next currentRow

End Sub

1 个答案:

答案 0 :(得分:1)

我不太明白你要完成什么,但是当我想复制所有内容(格式,值等)时,我使用单元格的Copy和PasteSpecial函数。

Sub DuplicateRows()

Dim currentRow As Integer
Dim currentNewSheetRow As Integer: currentNewSheetRow = 1

For currentRow = 1 To 3 'The last row of your data

    Dim timesToDuplicate As Integer
    timesToDuplicate = CInt(Sheet1.Range("D" & currentRow).Value2)

    Dim i As Integer
    For i = 1 To timesToDuplicate

        Sheet1.Range("A" & currentNewSheetRow).Copy
        Sheet2.Range("A" & currentRow).PasteSpecial (xlPasteAll)
        Sheet1.Range("B" & currentNewSheetRow).Copy
        Sheet2.Range("B" & currentRow).PasteSpecial (xlPasteAll)
        Sheet1.Range("C" & currentNewSheetRow).Copy
        Sheet2.Range("C" & currentRow).PasteSpecial (xlPasteAll)

        currentNewSheetRow = currentNewSheetRow + 1

    Next i

Next currentRow

End Sub

另请查看PasteSpecial函数的posible参数以完成结果。