【发布时间】:2017-09-23 11:50:17
【问题描述】:
我正在尝试根据工作表 1 的 H 列中指示的值将工作表 1 中的行复制到工作表 2 上。
我发现了一个似乎有效的代码,但它更改了原始工作表中的数据,而不是将行复制到不同的工作表中,例如“Sheet2”。
Sub CopyData()
'Updateby Extendoffice 20160922
Dim xRow As Long
Dim VInSertNum As Variant
xRow = 1
Application.ScreenUpdating = False
Do While (Cells(xRow, "A") <> "")
VInSertNum = Cells(xRow, "H")
If ((VInSertNum > 1) And IsNumeric(VInSertNum)) Then
Range(Cells(xRow, "A"), Cells(xRow, "H")).Copy
Range(Cells(xRow + 1, "A"), Cells(xRow + VInSertNum - 1, "H")).Select
Selection.Insert Shift:=xlDown
xRow = xRow + VInSertNum - 1
End If
xRow = xRow + 1
Loop
Application.ScreenUpdating = False
End Sub
如果 H 列中的值大于 0,如何更改此代码以运行原始提取工作表“Sheet1”中的宏并将行复制到“Sheet2”中?
Sheet1 中的示例数据如下。容器中的值在 H 列中,它决定了要复制并复制到 Sheet2 中的行数。
Supplier Dest Code Quantity Container
A US01 10001 1000 2
A US02 10002 500 4
B UK01 10001 0 0
C US01 10004 1300 1
Sheet2 中想要的结果如下:
Supplier Dest Code Quantity Container
A US01 10001 1000 2
A US01 10001 1000 2
A US02 10002 500 4
A US02 10002 500 4
A US02 10002 500 4
A US02 10002 500 4
C US01 10004 1300 1
谢谢。
【问题讨论】:
-
r是什么?你在哪里定义 ansSet它?它应该是Range吗? -
我在这方面真的很陌生。这是我从上面提到的链接中复制的代码。我不确定它应该是什么意思。
-
您从一个答案复制了一点,从另一个答案复制了另一部分。您要查找的“H”列中的值是多少,以便将其复制到“Sheet”1
-
当 H 列的值大于 1 时,您希望将数据从 sheet1 复制到 sheet2。对吧?
-
大于零。如果值为0,则该行不会被复制到sheet2 如果H 中的值为1,则该行数据被复制到sheet2 中一次。如果H中的值为2,则将该行数据复制两次到sheet2中。