Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 将一行数据从一个工作表粘贴到另一个工作表n次_Excel_Vba - Fatal编程技术网

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

Excel 将一行数据从一个工作表粘贴到另一个工作表n次,excel,vba,Excel,Vba,我需要将一行数据从一个工作表粘贴到另一个工作表n次。我想通过输入框输入n 关于如何使用VBA实现这一点,有什么建议吗 这是一个裸体宏。注意:需要调整图纸名称 Sub test() Dim dataWS As Worksheet, copyToWS As Worksheet Dim copyRow&, noCopies&, copySheetLastRow&, i& Set dataWS = Sheets("Sheet1") Set copyToWS = Shee

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


关于如何使用VBA实现这一点,有什么建议吗

这是一个裸体宏。注意:需要调整图纸名称

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统计工作表中的行数,然后查找下一个非空行。EndxlUp。这相当于从A列的最后一行开始,然后按CTRL+[向上箭头]

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

如果确定最后一行大于第1行,则向该行添加一行,使其变为+1。这是因为如果最后一行是第1行,则表示没有信息。在床单上还没有。但是,如果最后一行被确定为4,则表示第4行中有数据。我们在这个数字上加1,这样我们就不会覆盖该行中的数据。

录制宏是一个很好的起点。这个站点实际上不适合像这样要求完整的代码;这只针对具体问题。谢谢。我只是想了解这个过程和我可以开始的地方。在这个网站上不允许这样的问题吗?您能告诉我您知道此类问题应该向哪里提问吗?@user5241675-查看如何提问。你越是遵守这一点,我们就越能提供帮助@布鲁斯韦恩-谢谢你,非常感谢。这很有效。你能解释一下这部分的功能吗?代码copySheetLastRow=copyToWS.CellscopyToWS.Rows.Count,1.EndxlUp.Row如果copySheetLastRow>1,那么copySheetLastRow=copySheetLastRow+1 EndIf@user5241675-我已经编辑了这篇文章,以包含该行的细分。如果我能进一步解释,请告诉我!另外,如果它能作为答案,你介意把这篇文章标记成这样吗?谢谢这是一个很好的解释。谢谢。已回答。@user5241675-很高兴能帮助您!要标记为答案,请单击我的帖子左侧的复选标记。谢谢我还有另一个问题。如果代码copySheetLastRow>1,那么copySheetLastRow=copySheetLastRow+1 End如果代码说最后一行在for循环的末尾递增,即在代码处如果copySheetLastRow>1,那么copySheetLastRow=copySheetLastRow+1 End如果代码,If语句会再次递增行号吗?假设copySheetLastRow为4,那么它将再次转到If语句,并将其递增为5,因为copySheetLastRow>1,或者copySheetLastRow将保持为4,直到下一个i递增发生?