[英]Copy paste every 10 cells range *10 times to a column
我想每10行復制和粘貼一次,從A列到B列進行10次,以此類推,直到A列的結尾。
這是我嘗試過的宏的一個示例:
Sub cpydble()
Dim j As Long
Dim i As Long
Dim lRow As Long
lRow = Cells(Rows.Count, 1).End(xlUp).row
For i = 1 To lRow Step 10
For j = 1 To 100 Step 10
Cells(i, 1).Resize(10).Copy Destination:=Cells(j, 2)
Next j
Next i
End Sub
我是VBA的初學者,希望您能對此有所幫助-預先感謝。
這是我目前的結果:
您可以使用:
For i = 1 To lRow Step 10
Range("B" & i & ":B" & i + 9).Value = Range("A1:A10").Value
Next i
請注意,使用上面的代碼,如果它不是10的倍數,則最后一次迭代將在A
列的最后一行下方。
每次從1開始j
可能是一團糟。 只需為每個循環找到下一個打開的單元格即可。
Sub cpydbl()
Dim i As Long, j As Long
Dim lRow As Long
lRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To lRow Step 10
For j = 1 To 10
Cells(i, 1).Resize(10).Copy Cells(Rows.Count, 2).End(xlUp).Offset(1, 0)
Next j
Next i
Cells(1, 2).Delete xlShiftUp
End Sub
Offset
從第2行開始復制,因此我刪除了最后一個空的第一個單元格以將所有內容向上移動。
完全靈活的代碼
除了@DickKusleika的精美代碼之外,我還將展示一種使用數據數組的完全靈活的方法,您可以在其中定義替代的塊大小,重復次數以及通過常量開始的行。
Option Explicit ' declaration head of your code module
Sub copyBlocks()
Const SIZE& = 10, REPETITIONS& = 10, STARTROW& = 1 ' define block size, repetions and start row
Dim ws As Worksheet, i&, j&, k&, n&, v ' declare variables
Set ws = ThisWorkbook.Worksheets("MySheet") ' << change to your sheet name
n = ws.Range("A" & ws.Rows.Count).End(xlUp).Row ' find last row number in column A
n = ((n + SIZE) \ SIZE) * SIZE ' round up to full block size of 10 rows
ws.Range("B:B") = "" ' clear column B
k = STARTROW ' start row of 1st block series
For i = STARTROW To n Step SIZE ' if STARTROW = 1 For i=1, 11, 21, 31 ... To n
v = ws.Range("A" & i).Resize(SIZE) ' get next data block (10 rows)
For j = 1 To REPETITIONS ' write eg. 10 data blocks to column B
ws.Range("B" & (k + (j - 1) * SIZE)).Resize(SIZE) = v
Next j
k = k + SIZE * REPETITIONS ' get start row of next block series
Next i
End Sub
筆記
Option Explicit
來強迫自己這樣做; “&”符號是&
的縮寫,例如Dim i As Long
。 v
和所有未明確聲明的變量默認為Variant
。 n
在A列中找到最后一行,並將其四舍五入為10行的完整塊大小。 v = ws.Range("A1:E1234")
或v = ws.Range("A1:A17").Value
。 進一步的提示該數組的每個成員都可以通過行和列索引進行尋址。 請注意,從工作表范圍獲取值的數據字段數組是基於1的 ,因此第一個值將被尋址為v(1,1)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.