我正在尝试整合四个单独的标签,仅从每个标签中拉出特定列,这些列位于每个源标签上的不同位置,以便构建可旋转图表/图表。这是针对其他用户的,因此不能选择手动操作。
第一个标签工作正常,因为它只是一个直拉。一旦我尝试粘贴到最后一行,事情就很奇怪了。我从来没有这样做过这个任务,所以我可能会在这里找到一些非常基本的概念导致问题。我正在使用我在初步研究如何编写脚本时找到的方法。
以下是第一个有效的标签示例:
'Copy and paste data from tab 1
Worksheets("redacteda").Range("H:H").Copy _
Worksheets("Aggregate").Range("G:G")
以下是导致错误的后续选项卡中的示例:
Dim LastRow As Long
LastRow = Cells(Rows.Count, "A").End(xlUp).Row + 1
'Copy and Past data from tab 2
Worksheets("redactedb").Range("A:A").Copy _
Worksheets("Aggregate").Range("A" & LastRow)
我尝试了工作表(“聚合”)。范围(“A& LastRow”),但也没有用。
答案 0 :(得分:0)
这几乎就是您在上面评论中建议的内容。当然,如果您复制的单元格数多于目标工作表上剩余的单元格数,则仍可能出错 - 因此需要对此可能不太可能的事件进行一些错误捕获。
Sub x()
Dim LastRow1 As Long, LastRow2 As Long
With Worksheets("redactedb")
LastRow1 = .Cells(Rows.Count, "A").End(xlUp).Row
LastRow2 = Worksheets("Aggregate").Cells(Rows.Count, "A").End(xlUp).Row + 1
.Range("A1", .Range("A" & LastRow1)).Copy Worksheets("Aggregate").Range("A" & LastRow2)
End With
End Sub
答案 1 :(得分:0)
这样的事情应该适合你...
Sub Foo()
Dim wsDest As Worksheet: Set wsDest = ThisWorkbook.Worksheets("Sheet5")
Dim wsSrc As Worksheet, i As Long, CopyRange As Range, LastRow As Long
' Initialize array with sheet names to combine
Dim SrcArr() As String: SrcArr = Split("Sheet1,Sheet2,Sheet3,Sheet4", ",")
For i = 0 To UBound(SrcArr)
On Error Resume Next
LastRow = wsDest.Range("A:A").Find("*", SearchDirection:=xlPrevious).Row
On Error GoTo 0
Set wsSrc = ThisWorkbook.Worksheets(SrcArr(i))
With wsSrc
Set CopyRange = Application.Intersect(.UsedRange, .Range("A:A"))
CopyRange.Copy wsDest.Range("A" & LastRow + 1)
End With
Next i
End Sub