【问题标题】:Copy Column and Paste in different sheet starting at row 15 then every 87th row after从第 15 行开始复制列并粘贴到不同的工作表中,然后每隔 87 行粘贴一次
【发布时间】:2019-10-09 08:57:05
【问题描述】:

我正在尝试复制一列(工作表 2,范围(“A6:A70”)并粘贴到工作表 1。我希望工作表 2 A6 中的值粘贴到工作表 1 A15,然后粘贴工作表 2 A7 中的值在 A 15 下方粘贴 87 行,依此类推,在工作表 1 中每隔 87 个单元格粘贴整列(工作表 2,A6:A70)。

我尝试过不同的 .offset 命令和

ActiveSheet.Cells(Rows.Count, "B").End(xlUp).Row + 1

但我需要循环做的是

从 A15 开始并粘贴第一个值

那么也许:

读取上次粘贴的位置,向下移动 87 行,粘贴下一个值,等等...

Dim copySheet As Worksheet
Dim pasteSheet As Worksheet
Dim c As Range

Set copySheet = Worksheets("Sheet1")
Set pasteSheet = Worksheets("Sheet2")

copySheet.Range("A6:A70").Copy

pasteSheet.Cells(Rows.Count, 1).End(xlUp).Offset(87, 0).PasteSpecial xlPasteValues

实际结果什么都不是——我不确定我应该使用什么代码。

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    未经测试,但可能是这样的:

    Dim copySheet As Worksheet
    Dim pasteSheet As Worksheet
    
    Set copySheet = Worksheets("Sheet1")
    Set pasteSheet = Worksheets("Sheet2")
    
    Dim i as Long
    For i = 0 to 64
        pasteSheet.Range("A15").Offset(i * 87).Value = copySheet.Range("A6").Offset(i).Value
    Next i
    

    编辑:

    如果您正在处理pasteSheet 中的合并单元格,请尝试

    pasteSheet.Cells(15 + i*87, 1).Value = copySheet.Range("A6").Offset(i).Value
    

    【讨论】:

    • 在空白纸上完美运行!绝对是朝着正确方向迈出的一步。我的问题是当我粘贴到 Sheet2 单元格时,A15 是一个合并单元格(A15:A17),而下面的 87 个单元格是另一个合并单元格(A102:A104)等等.....由于某种原因,它完美地粘贴了 A15 单元格,它不粘贴剩余的单元格。如果我将偏移量更改为 86 或 90,它将按照编程进行粘贴,但这不是正确的单元格。可能是因为合并的单元格丢弃了偏移量吗?
    • 合并的单元格不应忽略计数。您通过最左边、最上面的单元格引用合并的单元格,因此 A102 将是要更新的单元格值。使用F8 单步执行代码。除了A15之外的所有单元格到底发生了什么?
    • 没什么,据我所知。第一次迭代的步骤粘贴在 A15 中,然后它运行迭代,但工作表上没有任何反应。
    • 当我将 pasteSheet 更改为空白表时,它完全按预期工作,粘贴在 A15、A102 等中......并且合并的单元格是左上角 A15、A102 等......
    • 我明白发生了什么。它将合并的单元格作为一个单元格。如果我在 102:104 删除了合并的单元格,它会将第二次迭代粘贴到 104 中。我相信它将 A15:A17 作为偏移计数的单个单元格 - 所以当它偏移 87 时,它从 A17 开始,而不是 A15。
    猜你喜欢
    • 2019-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多