【问题标题】:copy/ paste data to/after the last row/column of data. from old workbook to new workbook将数据复制/粘贴到最后一行/最后一列数据/之后。从旧工作簿到新工作簿
【发布时间】:2021-11-18 07:04:58
【问题描述】:

我正在更新每周的主文件。结果,我试图将数据从源文件复制并粘贴到主表。现在,需要将数据粘贴到前一周数据之后的列和行中。因此,例如,如果上周数据结束(“H70:M70”),我需要新粘贴的数据转到(“H71:M71”)。此外,新粘贴的数据有很多行,因此下周数据必须粘贴在本周数据的最后一行/列之后,即(“H230:M230”)。请帮忙。

Option Explicit
Sub Copydata()
Dim myWB As Workbook
Dim thisWB As Workbook
Dim thisWS As Worksheet

Application.ScreenUpdating = False    

Set myWB = Workbooks.Open("C:\Users\jjordan\Desktop\test.xlsx")

myWB.Sheets("Sheet1").Range("A8:F17").Copy

Set thisWB = ThisWorkbook
Set thisWS = thisWB.Sheets("Test data")

thisWB.Activate
thisWS.Range("H71:M71").PasteSpecial _
    Paste:=xlPasteValues, Operation:=xlNone, _
    SkipBlanks:=False, Transpose:=False

With Application
    .CutCopyMode = False
    .ScreenUpdating = True
End With

myWB.Close

End Sub

【问题讨论】:

  • thisWS.Range("A1") 所以不是A1 而是找到最后一行并使用它。编辑:你需要 5 分钟才能弄清楚如何找到最后一行 ^_^
  • @findwindow。新粘贴的区域有很多数据。这意味着,新数据必须“专门”粘贴在一个范围内的区域中。例如(“H71:M71”)。
  • 这也很容易做到。这将需要更长的时间才能弄清楚。提示:谷歌resize。编辑:好吧,既然你在复制/粘贴,那是无关紧要的,因为你可以只粘贴在最后一行。我建议改为设置范围,但你需要resize
  • 我认为这里的关键是最后一行/最后一列数据。该范围似乎很简单,但它必须是自动化的,因此新数据粘贴在前几周数据的最后一列/行之后。
  • 就像我说的,这需要您 5 分钟 才能弄清楚。如果它需要更长的时间......这个任务可能超出你的范围,你应该花钱请人去做 XD

标签: excel vba


【解决方案1】:

James,你熟悉 VBA 中的 End() 吗?

lastRow = ActiveSheet.Cells(Rows.Count,1).End(xlUp).Row

这将转到工作表第 1 列中最后一个可能的单元格,然后向上直到找到包含数据的单元格并返回相应的行。

End() 的其他可能参数是 xlDown、xlToLeft 和 xlToRight。它们可用于查找最后/第一列和行。

【讨论】:

  • 谢谢伙计。我将对 End() 进行一些研究。我见过它,所以它确实勾起了我的记忆。因此,它是一个开始的地方。没关系'findwindow',我对他的回应很满意。有些人有时间提供帮助,有些人则没有。对我来说很酷。我只是在学习。
  • 我认为这是看待它的好方法。如果您需要任何进一步的帮助,请发表评论,如果这解决了您的问题,请标记为答案!
  • 谢谢肖恩。是的,我可以从这里拿走。我认为这里的关键实际上是知道从哪里开始。由于那里有如此多的信息,因此破译所需的实际信息至关重要。显然,您为我指明了正确的方向。干杯!
  • PS 当您以后接受答案时,也请投票。这样我们就能得到更多的积分! :P
  • 每天学习新东西。我没有意识到这一点。说得通!谢谢
猜你喜欢
  • 1970-01-01
  • 2021-11-16
  • 1970-01-01
  • 1970-01-01
  • 2023-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-21
相关资源
最近更新 更多