【问题标题】:Copy & Paste multiple cells & rows in VBA excel在 VBA excel 中复制和粘贴多个单元格和行
【发布时间】:2018-08-20 10:36:01
【问题描述】:

我必须在 VBA excel 中重复复制多行。

有谁知道一些更短的解决方案如何做到这一点?

我目前的解决方案是这样的:

'Select row with sun altitude values
Range("A11:A277").Select
Selection.Copy
Range("EE11:EE277").PasteSpecial xlPasteValues
'Select row 11
Range("B11:EB11").Copy
Range("EF11").PasteSpecial xlPasteValues
Range("EF37").PasteSpecial xlPasteValues
Range("EF41").PasteSpecial xlPasteValues
Range("EF71").PasteSpecial xlPasteValues
Range("EF101").PasteSpecial xlPasteValues
Range("EF131").PasteSpecial xlPasteValues
Range("EF161").PasteSpecial xlPasteValues
Range("EF191").PasteSpecial xlPasteValues
Range("EF221").PasteSpecial xlPasteValues
Range("EF251").PasteSpecial xlPasteValues
'Select column B and paste in every next columns
Range("B11:B277").Select
Selection.Copy
Range("EF11").PasteSpecial xlPasteValues
Range("FU11").PasteSpecial xlPasteValues
Range("FX11").PasteSpecial xlPasteValues
Range("HM11").PasteSpecial xlPasteValues
Range("HQ11").PasteSpecial xlPasteValues
Range("JF11").PasteSpecial xlPasteValues

一般来说,我必须复制 10 个相同的行和至少 6 个相同的列。 每行之间的精确距离是 30,每 26 个穿插,如上图和附图所示。 我已经看到以前提供的在 VBA 中复制多个单元格的解决方案,但是它更多地涉及外部工作簿的问题。

感谢和问候,

【问题讨论】:

  • 您的代码有什么问题?有什么错误吗?你的问题是什么?你还没问。
  • 嗨,我想尽可能缩短我的代码。你知道如何解决这个问题吗?

标签: excel vba multiple-columns copy-paste


【解决方案1】:

通过使用逗号将区域组合成一个范围。所以这个:

'Select row 11
Range("B11:EB11").Copy
Range("EF11").PasteSpecial xlPasteValues
Range("EF37").PasteSpecial xlPasteValues
Range("EF41").PasteSpecial xlPasteValues
Range("EF71").PasteSpecial xlPasteValues
Range("EF101").PasteSpecial xlPasteValues
Range("EF131").PasteSpecial xlPasteValues
Range("EF161").PasteSpecial xlPasteValues
Range("EF191").PasteSpecial xlPasteValues
Range("EF221").PasteSpecial xlPasteValues
Range("EF251").PasteSpecial xlPasteValues

变成

'Select row 11
Range("B11:EB11").Copy
Range("EF11,EF37,EF41,EF71,EF101,EF131,EF161,EF191,EF221,EF251").PasteSpecial xlPasteValues

如果定期粘贴行,您可以使用循环来粘贴或构建范围

For i = 1 to 17 Step 4 'Paste every 4 rows
    Cells(136,i).PasteSpecial xlPasteValues 'Paste in column EF, a.k.a. column 136
Next i

Set RngTmp = Cells(136,1)
For i = 5 to 17 Step 4 'Paste every 4 rows
    Set RngTmp = Union(RngTmp, Cells(136,i)) 'Add the next cell to the range
Next i
RngTmp.PasteSpecial xlPasteValues 'Paste to all cells in the range

【讨论】:

  • 嗨,你能告诉我 136 值是什么意思吗?谢谢
  • @MariuszKrukar Column 136Column EF,同样Column 2Column BColumn 26Column ZColumn 27Column AA - @99 @ 属性接受行和列的数字
【解决方案2】:

您可以在一行中完成。例如,您可以复制/粘贴第 11 行:

Range("B11:EB11").Copy
Range("EF11, EF37, EF41, EF71, <all the others in your list> , EF251").PasteSpecial xlPasteValues

也就是说,您列出了用逗号分隔的所有单元格目标,用引号括起来。

【讨论】:

    猜你喜欢
    • 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
    相关资源
    最近更新 更多