[英]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 中复制多个单元格的解决方案,但是它更多地涉及外部工作簿的问题。
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.