在VBA Excel中复制和粘贴多个单元格和行

时间:2018-08-20 10:36:01

标签: excel-vba multiple-columns copy-paste

我必须反复在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中复制多个单元格的解决方案,但是该解决方案在解决外部工作簿问题时更多。

感谢和问候,enter image description here

2 个答案:

答案 0 :(得分:2)

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

'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

答案 1 :(得分:0)

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

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

也就是说,您用引号列出所有用逗号分隔的单元格目的地。