将一行数据从一个工作表粘贴到另一个工作表n次

时间:2015-10-13 02:40:05

标签: excel vba

我需要将一行数据从一个工作表粘贴到另一个n次。我想通过输入框输入输入n

有没有关于如何使用VBA执行此操作的指示?

1 个答案:

答案 0 :(得分:0)

这是一个简单的骨头宏。请注意,您需要调整工作表名称是必需的。

Sub test()
Dim dataWS As Worksheet, copyToWS As Worksheet
Dim copyRow&, noCopies&, copySheetLastRow&, i&

Set dataWS = Sheets("Sheet1")
Set copyToWS = Sheets("Sheet2") ' Change these as required.

copySheetLastRow = copyToWS.Cells(copyToWS.Rows.Count, 1).End(xlUp).Row
If copySheetLastRow > 1 Then
 copySheetLastRow = copySheetLastRow + 1
End If


copyRow = InputBox("What row would you like to copy?")
noCopies = InputBox("How many times do you want it copied?")

For i = 1 To noCopies
    With dataWS
        copyToWS.Rows(copySheetLastRow).Value = .Rows(copyRow).Value
    End With

    copySheetLastRow = copyToWS.Cells(copyToWS.Rows.Count, 1).End(xlUp).Row + 1
Next i

End Sub

从您的数据WS中获取所选行,并将其放入"中的下一个可用行;复制到"工作表。

编辑:根据您的问题,此代码可确保复制到的工作表将数据放在下一个可用行(从第1行开始的下一个空行)。

copySheetLastRow = copyToWS.Cells(copyToWS.Rows.Count, 1).End(xlUp).Row

这使用copyToWS工作表,并获取最后使用的行。 copyToWS.Rows.Count计算工作表中的行数,然后查看下一个非空行(.End(xlUp))。 (这相当于从最后一行开始,在A列中,然后按CTRL + [向上箭头]。

If copySheetLastRow > 1 Then
         copySheetLastRow = copySheetLastRow + 1
End If

如果确定最后一行大于第1行,则向其添加一行,使其变为#+ 1.这是因为如果最后一行是第1行,则表示没有信息。在表单中。但是,如果最后一行被确定为4,那么这意味着第4行中有数据。我们在这个数字上加1,所以我们不会覆盖该行中的数据。