【问题标题】:How to copy one cell (A1), paste it 640 times, copy the next cell (A2), paste it 640 times directly below如何复制一个单元格(A1),粘贴640次,复制下一个单元格(A2),粘贴640次直接在下面
【发布时间】:2020-08-03 14:16:37
【问题描述】:

VBA 新手,我正在尝试编写一个宏,该宏将复制 L 列中的 1 个单元格,将其粘贴到 A 列中 640 次,然后重复 176 次,这样在每个 640 次复制/粘贴循环后,宏将移动到 L 列中的下一个单元格,冲洗并重复。

到目前为止,我得到的是下面的代码,它基本上做了我想要它做的事情,但只做了两次——我认为差距在于我不知道如何正确应用循环两次(一次说复制 640 次,第二个说复制完 640 次后,转到 L 列中的下一个单元格并重新开始。

Dim i As Integer
For i = 1 To 2
    ActiveCell.Offset(1, 11).Range("A1").Select
    Selection.Copy
    ActiveCell.Offset(0, -11).Range("A1").Select
    ActiveSheet.Paste
    ActiveCell.Offset(1, 0).Range("A1").Select
    ActiveSheet.Paste
    ActiveCell.Offset(0, 11).Range("A1").Select
    Application.CutCopyMode = False
    Selection.Copy
    ActiveCell.Offset(1, -11).Range("A1").Select
    ActiveSheet.Paste
    ActiveCell.Offset(1, 0).Range("A1").Select
    ActiveSheet.Paste
Next i
End Sub

如果我错过了已经回答的线程(搜索了很多,但找不到),请提前感谢您的帮助和道歉。

【问题讨论】:

  • 在 A1 中:=INDEX(L:L,INT((ROW(A1)-1)/640)+1) 并复制下来。
  • 谢谢!这有效!

标签: excel vba


【解决方案1】:

你可以使用这样的循环

Sub CopyDown()

    Const NUM_ROWS As Long = 5 'or whatever
    Dim c As Range, rng As Range, i As Long

    Set c = Range("L1")
    Set rng = Range("A1").Resize(NUM_ROWS, 1)

    For i = 1 To 5 'or whatever
        rng.Value = c.Value
        Set rng = rng.Offset(NUM_ROWS, 0)
        Set c = c.Offset(1, 0)
    Next i

End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-26
    • 1970-01-01
    • 1970-01-01
    • 2014-12-27
    • 1970-01-01
    • 1970-01-01
    • 2017-01-09
    相关资源
    最近更新 更多