Excel vba - 粘贴到标题下方

时间:2018-05-10 07:01:44

标签: excel vba excel-vba

我需要将一个列从一个工作簿复制到另一个工作簿。

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

3 个答案:

答案 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