复制&粘贴/插入行 - 粘贴的数据多于复制的数据

时间:2017-04-28 13:48:25

标签: excel excel-vba copy-paste bulkinsert vba

我有一个宏,设置为使用工作表1中A到D列的数据复制所有行,然后将其粘贴到工作表2中的AD列中,将其插入工作表2中已有的数据上面。想法是创建一个持续的列表,最新数据位于顶部。

这工作得很好,直到今天 - 不确定发生了什么变化,我还没有以任何方式改变宏。

它正在按预期运行,但它会将所复制的数据永久地粘贴到excel中的所有列中。

所以说我在A,B,C和A列中有X行数据。 D.宏正确地获取这些数据并将其从Sheet 1粘贴到Sheet 2。但随后它也将这些数据粘贴到每一列(到XFD列)。

所以每4列都有与A / B / C / D相同的数据,直到excel用完列。

为什么这样做?我该如何阻止这种情况发生?

宏:

Sub CopyData()
    Dim i As Integer
        i = Sheets("Sheet1").Range("E1").Value  'E1 counts # of rows w/ data
    Sheets("Sheet1").Range("A2:D" & i).Copy  
    Sheets("Sheet2").Activate  
        Rows("2:2").Select  
        Selection.Insert Shift:=xlDown  
        Application.CutCopyMode = False  
    Sheets("Sheet2").Range("A1").Activate
End Sub

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

您正在复制四列并粘贴到16,384列中。您将不得不插入新行,然后复制源并使用目标的左上角单元格作为目标。

Sub CopyData()
    Dim i As Integer, dim ws1 as worksheet

    set ws1 = worksheets("sheet1")
    i = ws1.Range("E1").Value  'E1 counts # of rows w/ data

    with worksheets("sheet2")
       .rows(2).resize(i, .columns.count).Insert Shift:=xlDown 
       ws1.Range("A2:D" & i).Copy destination:=.cells(2, "A")
       .Activate
    End With
End Sub

答案 1 :(得分:0)

我必须指定一个单元格而不是整行,作为我想粘贴复制数据的位置。这现在有效。