我目前正在使用以下代码使用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
答案 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)
这可以满足您的需求。
comp
https://msdn.microsoft.com/en-us/library/office/ff839476.aspx?f=255&MSPPError=-2147217396
答案 3 :(得分:0)
您需要使用.PasteSpecial方法:
Range("BC3:BE" & bottomD).Copy
Sheets("Summary").Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).pastespecial xlPasteValues