【问题标题】:Issue with Copying Data From One Sheet to Another将数据从一张纸复制到另一张纸的问题
【发布时间】:2014-10-10 12:11:40
【问题描述】:

我通过循环方法开发了一个脚本,将数据从一个工作表复制到另一个工作表,然后刷新第一个字段。该脚本运行良好,除了一个问题。在第二张纸中,它应该在 A 列(即“x”)中找到最后一个非空白单元格,并从下一行中找到数据。问题是它正在将数据粘贴到 'x + 11' 行中。

我需要帮助确定发生这种情况的原因。

注意这里 i = 11 因为第 10 行的数据是表头,需要的数据从第 11 行开始。

这是我制作的宏:

Option Explicit

Sub CopyPaste()
    Dim i As Integer
    Dim x As Long
    Dim y As Long
    Dim c As Range

    i = 11

    Do While Cells(i, 1).Value <> ""
    'ActiveSheet.CopyPast

    x = i
    y = 0
    For Each c In Worksheets("CDS").Range(Cells(x, 1), Cells(x, 11))
        Worksheets("DataBank").Range("a10000").End(xlUp).Offset(x, y) = c

        y = y + 1
        x = 0
    Next c
    Application.CutCopyMode = False

    i = i + 1
    Loop
    With Sheets("CDS")
        Range("A11:K65").ClearContents
    End With
End Sub

【问题讨论】:

  • 您的意思是x = 1 而不是x = i
  • 对于第一个工作表 x 应该是 i 以从第 11 行开始范围,但第二个工作表应该偏移 x = 0 以超过 A 列中第一个非空白单元格中的数据 @TonyDallimore
  • 只是对您的代码的注释。当您使用 x 和 y 等单字母变量时,更难理解。此外,您应该命名您正在使用的范围。但我确实喜欢你使用Option Explicit。干得好!

标签: vba excel copy-paste offset


【解决方案1】:

这是因为您使用的偏移量从 11 开始,每次循环迭代都会增加 1。

改变: Worksheets("DataBank").Range("a10000").End(xlUp).Offset(x, y) = c

到: Worksheets("DataBank").Cells(Rows.Count,y+1).End(xlUp).Offset(1, 0) = c

【讨论】:

  • 我不确定我是否听懂了你的意思。你能用一个例子更新你的问题吗?
  • 感谢您现在从 A 列的第一个空白单元格中快速回复其过去的数据,但是数据的顺序受到干扰,假设数据范围是 A11 到 K11,第二张表中的第一个空白行是 10。现在它正在这样做。目标工作表上 A10 中的 A11、目标工作表上 B11 中的 B11、目标工作表上 C11 中的 C11 等等
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-14
  • 1970-01-01
相关资源
最近更新 更多