我有一个宏,设置为使用工作表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
感谢您的帮助!
答案 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)
我必须指定一个单元格而不是整行,作为我想粘贴复制数据的位置。这现在有效。