我们的大多数订单都通过原始包装团队处理,他们使用此合并格式为每个客户包装订单。
一个新团队需要将每个项目放在单独的行上,因此每个销售订单都需要五行,对于我们出售的每种类型的小部件,每一行。他们需要它看起来像这样:
我记录了复制/粘贴命令的宏以记录第一顺序:
Sub GrabOrders()
'
' GrabOrders Macro
'
'
Sheets("Raw Data").Select
Range("B2").Select
Selection.Copy
Sheets("Ship Sheet").Select
Range("A2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.AutoFill Destination:=Range("A2:A6"), Type:=xlFillDefault
Range("A2:A6").Select
Sheets("Raw Data").Select
Range("F1:J1").Select
Selection.Copy
Sheets("Ship Sheet").Select
Range("G2").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Sheets("Raw Data").Select
Range("F2:J2").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Ship Sheet").Select
Range("H2").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
End Sub
我现在需要复制(在原始格式选项卡上的单元格)将一行向下移动到下一个顺序,并粘贴到新格式选项卡上以开始向下移动五行,以免覆盖来自先前的顺序。
项目名称将保持不变(在原始选项卡的F1,G1等中),而其他要复制的单元格将移动。我需要循环直到它到达空白的销售订单单元格。
您应先删除代码中的所有select语句。
Range("B2").Select
Selection.Copy
可以简化为
Sheets("Raw Data").Range("B2").Copy
编写循环时,首先需要定义数据将位于的范围。当您阅读有关避免选择语句的知识时,您将学到更多有关如何执行此操作的信息。您将要定义从中提取数据的范围,并避免重写代码,我将在循环中定义另一行以说明您选择使用的自动填充命令。
下面的内容我相信可以满足您要实现的目标,但是您应该尝试返回并删除select语句。
Sub GrabOrders()
Dim lrdata As Long
lrdata = Sheets("Raw Data").Range("A" & Rows.Count).End(xlUp).Row ' choose whichever column contains the last row of your data here
Dim i As Long
For i = 2 To lrdata ' for 2 to the number of rows in our data
Dim lastrow2 As Long
lastrow2 = Sheets("Ship Sheet").Range("a" & Rows.Count).End(xlUp).Row + 1 ' get the last row in your ship sheet then add one to avoid copying over your data
' from here, every instace of "2" you are going to change it to " & i "
Sheets("Raw Data").Select
Sheets("Raw Data").Range("B" & i).Select
Selection.Copy
Sheets("Ship Sheet").Select
Sheets("Ship Sheet").Range("A" & lastrow2).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.AutoFill Destination:=Range("A" & lastrow2, "A" & lastrow2 + 4), Type:=xlFillDefault ' plus five to your last row since there are only 5 colors you need to get data for
Sheets("Raw Data").Select
Range("F1:J1").Select
Selection.Copy
Sheets("Ship Sheet").Select
Range("G" & lastrow2).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Sheets("Raw Data").Select
Sheets("Raw Data").Range("F" & i, "J" & i).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Ship Sheet").Select
Sheets("Ship Sheet").Range("H" & lastrow2).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Next i
End Sub