我需要将一个列从一个工作簿复制到另一个工作簿。
y.Sheets("data").Range("A2:A1048576").Clear 'delete contents of target columns first
x.Sheets("file").Range("C:C").Copy 'copy column from another sheet
y.Sheets("data").Range("A1").End(xlDown).Offset(1, 0).PasteSpecial xlPasteValues
我尝试将其粘贴到从A2
开始,因为A1
是我的标题。
我得到application-defined or object-defined error
答案 0 :(得分:1)
最佳做法是,在不需要时,不要引用整个列(数百万个单元格):
With y.Sheets("data") ' reference sheet "data" in workbook 'y'
.Range("A2", .Cells(.Rows.Count, "A").End(xlUp)).ClearContents ' clear 'referenced sheet column "A" cells from row 2 down to last not empty one
End With
With x.Sheets("file") ' reference sheet "file" in workbook 'x'
With .Range("C1", .Cells(.Rows.Count, "C").End(xlUp)) 'reference referenced sheet column "C" cells from row 1 down to last not empty one
y.Sheets("data").Range("A2").Resize(.Rows.Count).Value = .Value ' paste referenced range values to workbook "y" sheet "data" starting from cell A2
End With
End With
答案 1 :(得分:1)
或以下
With y.Sheets("data")
Intersect(.UsedRange, .Columns("A")).Clear
Intersect(x.Sheets("file").UsedRange, x.Sheets("file").Columns("C")).Copy .Range("A2")
End With
答案 2 :(得分:0)
这里的问题是您复制了一个完整的专栏Range("C:C").Copy
,这意味着您必须粘贴到一个完整的专栏,否则它将不适合并超过Excel的最大行数。
因此我建议只复制包含数据的C列部分:
With x.Sheets("file")
.Range("C1", .Cells(.Rows.Count, "C").End(xlUp)).Copy
End With
这仅从C1复制到最后使用的单元格。然后你可以将它直接粘贴到A2
y.Sheets("data").Range("A2").PasteSpecial xlPasteValues