简体   繁体   English

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

[英]Copy & Paste multiple cells & rows in VBA excel

I have to copy multiple rows in VBA excel repeatedly.我必须在 VBA excel 中重复复制多行。

Does anyone knows some shorter solution how to make this?有谁知道一些更短的解决方案如何做到这一点?

My current solution looks like this:我目前的解决方案是这样的:

'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

In general I have to copy 10 the same rows and at least 6 the same columns.一般来说,我必须复制 10 个相同的行和至少 6 个相同的列。 The exact distance between every row is 30 interspersed in every 26 , as per above and in the picture attached.每行之间确切距离是 30 散布在每 26 中,如上图和附图所示。 I have seen previous solution for copy multiple cells in VBA provided, however it refers more for issues with external workbooks.我已经看到以前提供的在 VBA 中复制多个单元格的解决方案,但是它更多地涉及外部工作簿的问题。

Thanks & regards,感谢和问候, 在此处输入图片说明

By combining the Areas into one Range with Commas.通过使用逗号将区域合并为一个范围。 So this:所以这:

'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

becomes变成

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

If the Rows are pasted at a regular interval, you could use a Loop, either to pate, or to build a Range如果以固定间隔粘贴行,则可以使用循环来粘贴或构建范围

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

or或者

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

You can do it in one line.您可以在一行中完成。 For example, your copy/paste of row 11 can be done:例如,您可以复制/粘贴第 11 行:

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

That is, you list all the cell destinations separated by commas, in quotes.也就是说,您在引号中列出了以逗号分隔的所有单元格目标。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM