使用VBA复制不同长度的粘贴范围

时间:2016-07-05 20:44:31

标签: vba loops range copy-paste

http://i.stack.imgur.com/93bt7.png

您好,

我正在尝试使用我制作的代码,但遇到了一些麻烦。

如果你看看我上面的照片,在B3单元格中我有一个CUSIP。我想要做的是复制CUSIP并将其粘贴到该CUSIP的每行信息中(所以行A4到A8)。然后我想转到J3中的第二个CUSIP(CUSIPS全部分别在第3行和第8行),然后将CUSIP粘贴到J4到J35行。

我想一次又一次地为1000种证券做这件事,但问题是这些行的长度不同。

我的代码正在运行,直到我将最后一段代码作为注释放入。它有效但却是静态的。仅适用于从第1安全性移动到第2安全性然后失败。我试图想一个动态的方式让我每次从CUSIP上次粘贴的单元格移动到第三行和相应的列(每次从最后一个粘贴的单元格开始,列将相隔9个。)

这是:

Sub CUSIP_Copy_Paste()

Dim LastRow As Long
Dim LastCol As Long
Dim c As Long
Dim r As Long

Range("B3").Select

    LastCol = Cells(4, Columns.Count).End(xlToLeft).column

For c = 2 To LastCol Step 8

    LastRow = Cells(Rows.Count, c).End(xlUp).row

        ActiveCell.Copy

        Cells(4, ActiveCell.Offset(1, -1).column).PasteSpecial xlPasteValues

For r = 5 To LastRow

    Cells(r, ActiveCell.Offset(1, 0).column).PasteSpecial xlPasteValues

Next r

     ''''''ActiveCell.Offset(-5, 9).Select

Next c

End Sub

谢谢!

1 个答案:

答案 0 :(得分:1)

您的错误在于最终的偏移量。而不是-5,放入一个变量,最好是变量,它是行计数结束和开始之间的差异,总是为3。

也就是说,Offset(3 - lastRow,9)

你几乎得到了朋友:)