【问题标题】:VBA copy paste range every 7th row, 7 timesVBA复制粘贴范围每7行,7次
【发布时间】:2018-10-11 19:13:30
【问题描述】:

下午好,

在为我想要做的事情研究了太多小时的正确代码之后,我终于不得不在这里问专家了。我对 VBA 非常陌生(但现在迷上了征服它!)。

我正在尝试复制我每天输入的 3 个单元格的数据(我将数据输入到 J:L 列中),然后将其粘贴 7 次,每隔 7 行粘贴一次(因此,我正在复制/粘贴星期一数据到接下来的 7 个星期一,在下面各自的行中)。每天都会发生变化,粘贴位置也会发生变化(周二数据将被复制,然后粘贴到下面接下来的 7 个周二行,等等)。我输入的数据将始终是 J:L 列。 然后,一旦粘贴了数据,我就有了一个使用该数据的按钮,并将其清除。因此,J:L 列总是清晰的,直到我将数据添加到下一行 3 个单元格。

感谢您的任何帮助,因为我只是被难住了。我尝试了“lastrow”的几种变体,但没有找到适合我的正确编码(从这里拼凑信息,但未能使其工作)。

我尝试在此处添加快照,但显然,我什至对此都太菜鸟了:/ 这个想法似乎很简单,所以希望会有一个简单的解决方案。

谢谢你的精彩! 已编辑(抱歉让我在这个站点的第一次运行变得如此困难:/)

Sub CopyPaste()  
'  
' CopyPaste Macro  
' copies and pastes range for 8 total weeks  
'  
Dim lastrow As Long  
lastrow = Range("J" & Rows.Count).End(xlUp).Row  
'  
    Selection.Copy  
    Range("J27").Select  
    ActiveSheet.Paste  
    Range("J34").Select  
    ActiveSheet.Paste  
    Range("J41").Select  
    ActiveSheet.Paste  
    Range("J48").Select  
    ActiveSheet.Paste  
    Range("J55").Select  
    ActiveSheet.Paste  
    Range("J62").Select  
    ActiveSheet.Paste  
    Range("J69").Select  
    ActiveSheet.Paste  
    Application.CutCopyMode = False  
End Sub

【问题讨论】:

  • 请贴出您尝试过的代码。
  • Sub CopyPaste() ' ' CopyPaste Macro ' 复制和粘贴范围共 8 周 ' Dim lastrow As Long lastrow = Range("J" & Rows.Count).End(xlUp).Row ' Selection.Copy Range("J27").Select ActiveSheet.Paste Range("J34").Select ActiveSheet.Paste Range("J41").Select ActiveSheet.Paste Range("J48").Select ActiveSheet.Paste Range(" J55").Select ActiveSheet.Paste Range("J62").Select ActiveSheet.Paste Range("J69").Select ActiveSheet.Paste Application.CutCopyMode = False End Sub
  • 第一个星期一总是从 J27 开始吗?您在哪里输入数据?
  • J27 是星期一的行,当时我开始尝试找出要粘贴到接下来 7 个星期一行的代码。一旦该日期过去,下周一我会将数据输入 J34,这样我就可以在那里复制,然后将其复制到接下来的 7 个周一行。
  • 我有点困惑。您的代码建议您从未指定的单元格复制到 J27、J34 等。您能否举一个具体示例说明数据从哪里开始以及应该去哪里?

标签: excel loops copy paste vba


【解决方案1】:

看看这是否有帮助。我预见到一个问题,一旦您将值复制到工作表中,例如星期一,最后使用的行将是第 70 行或类似的行。

Sub x()

Dim i As Long, lastrow As Long

lastrow = Range("J" & Rows.Count).End(xlUp).Row

For i = 1 To 7
    Cells(lastrow, "J").Resize(, 3).Offset(7 * i).Value = Cells(lastrow, "J").Resize(, 3).Value
Next i

End Sub

【讨论】:

  • 到目前为止,这是我所见过的最好的我正在尝试做的事情!我将代码分配给一个按钮,所以一旦我按下它,我需要复制数据并粘贴到接下来的 7 行,然后完成。您的代码运行良好,但我必须继续移动它,直到我停止粘贴多少行。
  • 你能举个具体的例子吗?我不知道“我必须继续移动它,直到我停止粘贴多少行”是什么意思。
  • 停止印刷机!我很抱歉!我正在使用 F8 测试此代码以运行这些步骤,并且一次只粘贴 1 行。我一直按 F8 来运行它,粘贴另一行等等。好吧,我应该只运行整个宏,因为它运行良好!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-15
相关资源
最近更新 更多