【问题标题】:Excel VBA Copy/Paste Range to the next available cell in another worksheetExcel VBA复制/粘贴范围到另一个工作表中的下一个可用单元格
【发布时间】:2015-10-03 06:21:42
【问题描述】:

我想要做的:过滤一个数组,然后将过滤后的数据复制到另一个工作簿上。然后将刚刚粘贴到同一工作簿中另一个工作表的数据复制到现有数据下方。

我的想法:我下面使用的代码是用来帮助我从一个工作簿复制粘贴到另一个工作簿的,并且运行良好,

wb.Sheets("2014 Current Week").Range("C2:CC10000").Copy nwb.Sheets("2014 YTD").Range("C" & Rows.Count).End(xlUp).Offset(1, 0) 

但如果我想在同一个工作簿中进行复制,它的工作方式似乎不同。任何帮助,将不胜感激。谢谢!

Dim wb as workbook
Dim strs As String
Dim str As String
Dim nwb as workbook


Set wb = ThisWorkbook

strs = wb.Sheets("Macros").Range("H5") 'the 2014 address can be found in full in cell H5 in the Macros tab

set nwb = Workbooks.Open(strs) 'address of new workbook and opens it

With ActiveSheet

.AutofilterMode = False
'Filter this and that here'

End With



 nwb.Sheets("ALL DATA").Range("A1:CA100000").Copy wb.Sheets("2014 Current Week").Range("C" & Rows.Count).End(xlUp) 
'this one works, and copies exactly as I want into the 2014 Current Week tab

 wb.Sheets("2014 Current Week").Range("C2:CC10000").Copy wb.Sheets("2014 YTD").Range("C" & Rows.Count).End(xlUp).Offset(1, 0) 
'this one doesn't work, and does not copy or paste at all from that 2014 Current Week into the 2014 YTD tab of the same workbook

【问题讨论】:

  • does not work = 没有帮助的描述。当前代码的作用是什么,与您想要的有什么不同?如果您在同一张工作表上的工作簿、工作表或范围之间进行复制,应该没有区别。该问题可能与这些工作表上的具体内容有关,但再次需要对问题进行更好的描述。请edit 详细说明您的问题。
  • 谢谢拜伦,我编辑了我的问题,希望能解释更多我的问题。除了上面的代码,我还尝试使用 nwb.Sheets("ALL DATA").Range("A1:CA100000").Copy wb.Sheets 将数据直接从新工作簿复制到 2014 YTD 选项卡("2014 YTD").Range("C" & Rows.Count).End(xlUp) 这与有效的代码基本相同,但这个仍然无效。
  • 代码看起来不错。这意味着该问题特定于您的工作表和数据。最好的方法是彻底调试。您最好为源和目标创建一个Range,这样您就可以看到它们包含的内容。获得变量后,您可以添加断点,并单步执行代码以查看它在做什么。 2014 Current Week 上的 Range 中是否有任何数据?您确定要在该表上显示 C 列吗?你也想要这么大的数据块吗?表2014 YTD 是您期望它去的地方吗?有一些简单的东西,因为你的代码看起来不错。
  • 2014 Current Week 标签的第 1 行只有标签,没有其他数据。当前周和 YTD 选项卡的布局相同,唯一的区别是 YTD 有现有数据。数据块是变化的,所以大块是我最简单的动态变化的方法。如果上面的代码正常工作,数据应该会粘贴到两个选项卡中,但目前它只是粘贴到当前周选项卡中。
  • 就像你说的拜伦,一些简单的事情......显然 YTD 选项卡列 C 中有一些数据,远远低于我看到的任何现有数据。所以,代码粘贴了这个数据下的所有新数据。

标签: excel vba copy range paste


【解决方案1】:

您的代码看起来不错,应该没有任何问题。由于它似乎不起作用,您需要查看实际的Worksheets 和涉及的数据。

您正在使用End 查找最后一行数据。鉴于此,值得自己进行测试。转到C 列中Worksheet 的最后一行,然后按CTRL + UP。这将显示数据将被粘贴到哪里。

根据您的描述,最后一行是问题所在。因为有一些杂散数据影响了End

【讨论】:

  • 是的,我在 C 列中发现了不应该存在的数据。这偏离了应该粘贴实际数据的位置。
【解决方案2】:

我刚刚测试了您的代码,它运行良好。它正确粘贴数据。检查工作表的名称。

【讨论】:

  • 我什至尝试过重命名我的工作表...我想这可能是工作簿中更深层次的东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-08
  • 1970-01-01
  • 2020-04-09
相关资源
最近更新 更多