簡體   English   中英

在 VBA excel 中復制和粘貼多個單元格和行

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

我必須在 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 中復制多個單元格的解決方案,但是它更多地涉及外部工作簿的問題。

感謝和問候, 在此處輸入圖片說明

通過使用逗號將區域合並為一個范圍。 所以這:

'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

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

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

也就是說,您在引號中列出了以逗號分隔的所有單元格目標。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM