从一个工作表中复制一系列数据&在另一个工作表中粘贴18次

时间:2016-12-28 05:48:32

标签: excel vba excel-vba

Helloo,

我需要从一个工作表中复制一系列数据。在另一个工作表中粘贴18个每个数据。

例如, 我需要从名为"输入"的一张表中复制第6行A,F,G列的数据。 并且需要从名为" locale_Data"

的其他工作表中的A列,C,D的第6行开始,将数据粘贴18次

因此,输入表的第一个数据应该粘贴到表" locale_Data"的行(6:23)中。 &安培;以顺序方式跟随其他数据。

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

如果您在输入工作表的A6:A10范围内有值,并且您希望从第6行开始18次将它们复制到locale_Data工作表中,您可以执行以下操作。

Dim LastRow As Long
Dim i, startAt, totalRowsToCopy  As Integer
Dim sheet1 As Worksheet
Dim sheet2 As Worksheet

Set sheet1 = ThisWorkbook.Worksheets("Inputs")
Set sheet2 = ThisWorkbook.Worksheets("locale_Data")
LastRow = sheet1.Cells(sheet1.Rows.Count, "A").End(xlUp).Row

sheet1.Range("A6:A" & (LastRow)).Copy
startAt = 6
totalRowsToCopy = LastRow - startAt + 1
For i = 1 To 18
  sheet2.Range("A" & startAt & ":A" & (startAt + totalRowsToCopy - 1)).PasteSpecial
  startAt = startAt + totalRowsToCopy
Next i

(在Mat's建议之后编辑)

如果您只想在第6行中将值复制18次,可以执行以下操作:

ThisWorkbook.Worksheets("Inputs").Range("A6").Copy
ThisWorkbook.Worksheets("locale_Data").Range("A6:A23").PasteSpecial

您必须为每个单元格重复此代码。

如果你想将18更改为其他数字,你可以随时连接像

这样的单元格范围
Range("A6:A" & (6 + 18)).PasteSpecial

如果这不是你想要的,请告诉我。

答案 1 :(得分:0)

你可以尝试这样的事情。我只展示了一个专栏。你可以重复其他专栏。请务必将范围$A$1:$A$2更改为所需的数据范围。

Spreadsheet screenshot

D1 = INDEX($A$1:$A$2,QUOTIENT(ROW()-ROW($D$1),18)+1)