我正在为另一个用户构建一个工作簿,并希望它尽可能自动化。在表1中,用户将复制销售数据,每个产品编号包含多行。行数每次都不同。 我想将每一行复制到Sheet 2,其中有一个Vlookup到一个Pivot。
澄清:
列A:K有产品数据。但是每种产品都有多行销售数据,交付给不同的客户。我只是想将每个产品的一行复制到另一张纸上。
我无法找到VBA"对于F列中的每个新数字:F do ..."
答案 0 :(得分:0)
所以我没有从您的问题中获得足够的信息以便能够修改此代码,但我在大约一周前建立了一个类似问题的项目。这是我的代码:
Dim c As Integer
Dim find As Double
Dim row As Integer
Dim config As Long
Dim configA As Long
Dim cnt As Integer
Dim o As Integer
Dim LastRow As Range
find = Sheets("Packing Slip").Cells(6, "G").Value
Sheets("Shipping Detail").ListObjects("Table_Shipping_Detail_Lookup").Range.AutoFilter Field:=6, Criteria1:=find
c = 20
For o = 2 To 175
If Sheets("Shipping Detail").Cells(o, 6) = find Then
Sheets("Packing Slip").Cells(c, 2) = Sheets("Shipping Detail").Cells(o, 1)
Sheets("Packing Slip").Cells(c, 3) = Sheets("Shipping Detail").Cells(o, 7)
Sheets("Packing Slip").Cells(c, 4) = Sheets("Shipping Detail").Cells(o, 8)
Sheets("Packing Slip").Cells(c, 5) = Sheets("Shipping Detail").Cells(o, 11)
config = Sheets("Shipping Detail").Cells(o, 1)
configA = Sheets("Shipping Detail").Cells(o + 1, 1)
Do While configA - config = 0
cnt = cnt + 1
c = c + 1
Sheets("Packing Slip").Cells(c, 4) = Sheets("Shipping Detail").Cells(o, 5)
o = o + 1
If configA - config = 1 Then
Exit Do
End If
configA = Sheets("Shipping Detail").Cells(o + 1, 1)
Loop
c = c + 1
configA = configA + 1
End If
Next o
Sheets("Shipping Detail").ListObjects("Table_Shipping_Detail_Lookup").Range.AutoFilter Field:=6
Worksheets("Packing Slip").Activate
此第一个IF语句使用与发货详细信息中的搜索匹配的数据来覆盖第一个列表。
如果装运明细中的下一行数据具有相同的订单编号,则现在装箱单中的下一行仅将装运详细信息的第5列中的项目(即产品说明)复制到装箱单中的第4栏
如果下一个现在具有相同的订单号但是另一个产品,则它会将产品标题拉到下一个,并且其详细信息将遵循
如果下一行是新订单,程序就会停止。
希望这有帮助!!