【问题标题】:VBA Copy and Paste to Row +1 belowVBA复制并粘贴到下面的行+1
【发布时间】:2018-08-15 14:36:53
【问题描述】:

我正在尝试编写一些代码,将单元格 A3:A6 中的数据复制并粘贴到 A8:A11 中,然后再次运行时,它会将其粘贴到下方的 +1 行,因此下次运行数据时A8:A11 将被复制并粘贴到 A13:A16 中,下次运行时会将 A13:16 中的数据粘贴到 A18:21 中,依此类推。

以下是我试图提出的,但我可能还有很长的路要走,任何指导将不胜感激:

Sub RollFile()

Dim UsdRows As Long

UsdRows = Cells(Rows.Count, 3).End(xlToUp).Row
With Range(Cells(1, UsdRows), Cells(UsdRows, 1))
  .Copy .Offset(, 1)
  .Value = .Value
  .Offset(-1, 1)(1).Select
End With

End Sub

非常感谢

【问题讨论】:

  • xlUp,而不是xlToUp。此外,您的 Offset(, 1) 偏移 1 列 - 行偏移量是第一个参数。
  • Cells的第二个参数是列号,为什么Cells(1, UsdRows)

标签: vba excel copy copy-paste


【解决方案1】:

你可以试试这个

Sub RollFile()

    With Cells(Rows.Count, 1).End(xlUp) ' reference column A last not empty cell
        With Range(.End(xlUp), .Cells) ' reference the range from referenced cell up to last adjacent one
            .Offset(.Rows.Count + 1).Value = .Value ' copy referenced range values to a range two row below its end
        End With
    End With

End Sub

【讨论】:

    【解决方案2】:

    我建议如下:

    Option Explicit
    
    Public Sub RollFile()
        Const RowsToCopy As Long = 4 'amount of rows that should be copied
    
        Dim LastCell As Range
        Set LastCell = Cells(Rows.Count, "A").End(xlUp) 'last cell in col A
    
        With LastCell.Offset(RowOffset:=-RowsToCopy + 1).Resize(RowSize:=RowsToCopy) '= last 4 cells (4 = RowsToCopy)
            .Copy LastCell.Offset(RowOffset:=2)
            .Value = .Value 'not needed I think
        End With
    End Sub
    

    它在 A 列中查找最后使用的单元格。然后从那里选择前 4 个单元格并复制下面的 2 行。

    请注意,我认为 .Value = .Value 根本不需要,因为只有复制需要转换为值的公式才有意义。

    【讨论】:

    • 这已将 A4:A6 复制到单元格 A7:A9 - 例如在单元格 A3、A4、A5 和 A5 中包含文本 A、B、C 和 D - 这已将文本 B、C 和D 进入单元格 A7:A9。我需要它以便 A、B、C 和 D 进入 A8:A11。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多