【问题标题】:Copy a column of data from the second row until the last row with data in it and paste as the last row in a column on another sheet VBA从第二行复制一列数据,直到其中包含数据的最后一行,然后粘贴为另一工作表 VBA 上一列中的最后一行
【发布时间】:2019-11-14 18:53:13
【问题描述】:

我正在编写一个 VBA 代码,将数据从第二个单元格“A2”复制到最后一个包含数据的单元格(这个范围会改变)。然后,我想将数据从 A 列的最后一行开始粘贴到另一张纸上。

到目前为止,我的 VBA 代码似乎什么也没做。有人可以帮我弄清楚原因吗?

Option Explicit

Public Sub AddNotes()

Dim lastRow1 As String
Dim lastRow2 As String

lastRow1 = Sheets("PropertiesToMatch").Cells(Rows.Count, 1).End(xlUp).Row
Sheets("PropertiesToMatch").Range("A2" & lastRow1).Copy

lastRow2 = Sheets("PropertyNotesToUpload").Cells(Rows.Count, "A").End(xlUp).Row + 1
Sheets("PropertyNotesToUpload").Range("A" & lastRow2).PasteSpecial Paste:=xlPasteValues

End Sub

【问题讨论】:

  • 你的问题是什么?
  • @BigBen 是的,我意识到这一点并删除了该评论:)
  • 您可能希望将Dim lastRow1 As StringDim lastRow2 As String 更改为As Long
  • @ZackE 这是一个很好的收获。我将纳入我的答案。
  • 再观察一次。我相信对表格和范围进行限定会更谨慎,而不是从性能的角度复制它们使范围彼此相等。在不知道数据集有多大的情况下授予它可能并不重要。

标签: excel vba


【解决方案1】:

改变

.Range("A2" & lastRow1)

.Range("A2:A" & lastRow1)

第一个只是一个单元格,第二个是你想要的范围。

还有,改变

Dim lastRow1 As String
Dim lastRow2 As String

Dim lastRow1 As Long
Dim lastRow2 As Long

因为Range.RowLong,而不是String

【讨论】:

    【解决方案2】:
    Option Explicit
    
    Sub CopyPaste()
    Dim i, j As Integer
    Dim LastRow As Integer
    
    With Sheets("PropertiesToMatch")
        LastRow = .Range("A" & .Rows.Count).End(xlUp).Row
    End With
    j = 2
    
    For i = LastRow To 2 Step -1
    Sheets("PropertiesToMatch").Cells(i, 1).Copy
    Sheets("PropertyNotesToUpload").Cells(j, 1).PasteSpecial Paste:=xlPasteValues
    
    j = j + 1
    Next i
    
    End Sub
    

    【讨论】:

    • 这个答案有很多问题。使用Long 而不是Integer,不需要循环,而且你是从底部循环到顶部等等。
    • 感谢您的更正。真的很好奇,为什么使用 Long 而不是 Integer?至于反向循环,我解释了“然后我想从另一张纸上 A 列的最后一行开始粘贴该数据”,因为我希望第一张纸中 A 列的最后一个单元格成为 A 列的第一个单元格在第二张纸上。
    • 我可以看到您可能会如何从问题中解脱出来,但是 OP 的代码非常清楚目标是什么,并且已经有一个公认的答案。
    • 请参阅this question 了解为什么不使用整数。主要原因是可能存在溢出错误 - Excel 的行数超过 Integer 可以处理的行数。
    • 抱歉,如果我的第一条评论以任何方式显得粗鲁,我本可以更温和一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多