【问题标题】:VBA copy paste range into corresponding range for rows with contentVBA将范围复制粘贴到具有内容的行的相应范围中
【发布时间】:2015-06-25 10:58:10
【问题描述】:

我有一个名为“SicknessRecordGraded”的电子表格,其中包含不同数量的行。
列 A - F (1 - 6),有原始内容要计算。
然后从 I - AG (9 - 33) 列中,有一系列公式可以计算 A - F 中的信息。
我正在准备一个 vba 宏来自动将公式范围从 I - AG 复制到 A - F 中有内容的每一行中。
我一直在尝试如下编写宏。我有使用 .resize 函数正确复制的范围,但是我还没有弄清楚如何粘贴到正确的范围内。

    Public Sub experiment2()


Dim rw As Long
rw = 3

    ' Select initial sheet to copy from
    Sheets("SicknessRecordGraded").Select


    ' Find the last row of data - xlUp will check from the bottom of the spreadsheet up.
    FinalRow = Cells(Rows.Count, 1).End(xlUp).Row
    ' For loop through each row
    For x = 1 To FinalRow

            Cells(rw, 9).Resize(1, 33).Copy ' Resize from intial range. Columns I - AG.

             NextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1 'Continue incrementing through the rows.
            Cells(NextRow, 1).Select ' Find the next row.
            ActiveSheet.Cells(NextRow, "I").PasteSpecial xlPasteAll ' Paste information.
            Sheets("SicknessRecordGraded").Select 'Reselect sheet to copy from. Probably uneccessary.

    Next x
End Sub

我认为要修改的行是

ActiveSheet.Cells(NextRow, 1).PasteSpecial xlPasteAll ' Paste information.

包含另一个范围函数。

【问题讨论】:

  • 您是否知道Cells(x, 9).Resize(9, 33) 调整为 9 行 x 33 列的范围,而不是从第 9 列到第 33 列的单行范围?
  • 看起来不是这样。这很有用。

标签: vba excel


【解决方案1】:

如果您希望开始粘贴的范围是Cells(NextRow, 1),那么您只需使用:

ActiveSheet.Cells(NextRow, 1).PasteSpecial xlPasteAll

或:

ActiveSheet.Paste Cells(NextRow, 1)

【讨论】:

  • 好的,那么如何将范围粘贴到 I - AG 列中?
  • 如果NextRow 值正确,请使用:Cells(NextRow, "I") 而不是Cells(NextRow, 1)
  • 好的,我已经编辑了我上面的代码以纳入您的建议。现在它正在将正确的范围复制到正确的范围内。但是,它现在粘贴到 A - F 有内容的行之后的行中。
  • 我怀疑你想使用:NextRow = Cells(Rows.Count, "I").End(xlUp).Row + 1 所以它会转到 col I 中的下一个空白行,而不是 col A。
  • 太棒了。问题已解决。代码有效。非常感谢。
猜你喜欢
  • 2016-08-30
  • 1970-01-01
  • 2012-08-21
  • 1970-01-01
  • 1970-01-01
  • 2013-09-28
  • 1970-01-01
  • 2016-06-21
  • 1970-01-01
相关资源
最近更新 更多