VBA使用带Offset的Range.Copy方法粘贴值

时间:2017-04-11 12:35:58

标签: excel vba excel-vba

我目前正在使用以下代码使用Offset使用Range.Copy方法合并具有相同范围的多个工作表中的数据。

我正在尝试仅粘贴值而不是公式。但是,我得到的公式也导致错误" #REF!"。 任何人都可以帮我正确的语法? 我刚开始学习VBA编码。

    For Each ws In Sheets(Array("A", "B", "C", "D", "E"))
    ws.Activate
    bottomD = Range("BC" & Rows.Count).End(xlUp).Row
    Range("BC3:BE" & bottomD).Copy Sheets("Summary").Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)
    Next ws

4 个答案:

答案 0 :(得分:2)

您可以在不激活每张工作表的情况下执行此操作,并使用pastespecial仅复制值

Sub x()

Dim ws As Worksheet, bottomD As Long

For Each ws In Sheets(Array("A", "B", "C", "D", "E"))
    bottomD = ws.Range("BC" & ws.Rows.Count).End(xlUp).Row
    ws.Range("BC3:BE" & bottomD).Copy
    Sheets("Summary").Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).PasteSpecial xlValues
Next ws

End Sub

答案 1 :(得分:2)

您可以直接指定值,无需使用复制/粘贴,也无需选择/激活:

For Each ws In Sheets(Array("A", "B", "C", "D", "E"))
    With ws.Range("BE3", ws.Cells(ws.Rows.Count, "BC").End(xlUp))
        Sheets("Summary").Cells(Rows.Count, "A").End(xlUp).Offset(1, 0) _
           .Resize(.Rows.Count, .Columns.Count).value = .value
    End With
Next ws

答案 2 :(得分:0)

答案 3 :(得分:0)

您需要使用.PasteSpecial方法:

Range("BC3:BE" & bottomD).Copy
Sheets("Summary").Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).pastespecial xlPasteValues