我有这个代码,它将来自三个工作表的数据附加到摘要表中,但是在执行时它将从表1和表2中的13行中的12行和从表3中的十三行到摘要我也希望这可以通过发送到不同工作簿中的摘要表
Sub SummurizeSheets()
Dim ws As Worksheet
Application.ScreenUpdating = False
Sheets("Summary").Activate
For Each ws In Worksheets
If ws.Name <> "Summary" Then
ws.Range("D2:D6, D8:D15").Copy
Worksheets("Summary").Cells(Rows.Count, 4).End(xlUp).Offset(0, 0).PasteSpecial (xlPasteValues)
End If
Next ws
End Sub
答案 0 :(得分:1)
将Offset(0,0)
更改为Offset(1,0)
。发生的不是它复制12行,而是从前一个块的末尾开始粘贴后续块。也就是说,第一个块粘贴到D1:D13,第二个块粘贴到D13:D26。通过使用Offset(1,0)
,将从第一个空单元格(即D14
)开始粘贴第二个块。
您可以将结果放在新工作簿中,只需在代码中创建并在粘贴中引用它,例如:
Option Explicit
Sub SummurizeSheets()
Dim ws As Worksheet
Dim currentWB As Workbook: Set currentWB = ActiveWorkbook
Dim newWB As Workbook: Set newWB = Application.Workbooks.Add
newWB.Worksheets(1).Name = "Summary"
For Each ws In currentWB.Worksheets
ws.Range("D2:D6, D8:D15").Copy
With newWB.Worksheets("Summary").Cells(Rows.Count, 4).End(xlUp)
If IsEmpty(.Value) Then
.PasteSpecial (xlPasteValues)
Else
.Offset(1, 0).PasteSpecial (xlPasteValues)
End If
End With
Next ws
End Sub
已更新编辑以粘贴到列中的第一个空单元格,即使这是第1行。