|
本帖最后由 抹不去の回忆 于 2023-7-20 15:08 编辑
原理是这样:
我想把文件夹中“订货单"这个工作薄表1里的“采购计划数量”,“仓库库存“这个工作簿表1里的“数量、售价”,匹配到在“自动请货表“这个工作薄表1对应的位置中。
第一步:我设想的是先把“总库存”的基础数据取到“自动请货表”表1对应位置
第二步:把“订货单”里需要的数据取到“自动请货表”表1对应位置
第二步:把“仓库库存”里需要的数据取到“自动请货表”表1对应位置
整个代码运行执行第二步、第三步查找不到相同数据,问题我自己大概找到了,是第一段代码取“商品编码”这列数据格式出问题了,导致无法进行匹配,请大神帮忙看看如何做优化,谢谢!
初学者,表述不清楚的地方请谅解一下!!!
这是第一段代码主要是用来把总库存这个表里需要的数据取到自动报货表里面来,但是取过来以后商品编码变了,比如003124,取过来以后变成了3124
Sub a() '自动提取采购计划数据
Dim arr, colarr
ph = ThisWorkbook.Path
Workbooks.Open ph & "\总库存.xlsx"
arr = ActiveWorkbook.Sheets("sheet1").Cells(1, 1).CurrentRegion
Workbooks("总库存.xlsx").Close 0
Workbooks("自动报货表.xlsm").Activate
colarr = Application.WorksheetFunction.Index(arr, 0, 4)
Sheet1.Range("a1").Resize(UBound(arr)) = colarr
colarr = Application.WorksheetFunction.Index(arr, 0, 5)
Sheet1.Range("b1").Resize(UBound(arr)) = colarr
colarr = Application.WorksheetFunction.Index(arr, 0, 6)
Sheet1.Range("c1").Resize(UBound(arr)) = colarr
colarr = Application.WorksheetFunction.Index(arr, 0, 7)
Sheet1.Range("D1").Resize(UBound(arr)) = colarr
colarr = Application.WorksheetFunction.Index(arr, 0, 9)
Sheet1.Range("e1").Resize(UBound(arr)) = colarr
colarr = Application.WorksheetFunction.Index(arr, 0, 10)
Sheet1.Range("I1").Resize(UBound(arr)) = colarr
End Sub
这是第二段代码
第一段代码执行完成后,就有了基础资料,然后根据“自动报货表”和“订货单”里面的商品编码做循环遍历,从“订货单”里面把计划数量(16列)赋值到自动报货表的11列
Sub b()
Dim arr, ph
ph = ThisWorkbook.Path
Workbooks.Open ph & "\订货单.xlsx"
arr = ActiveWorkbook.Sheets("sheet1").Cells(1, 1).CurrentRegion
Workbooks("订货单.xlsx").Close 0
Workbooks("自动报货表.xlsm").Activate
h = Range("A65536").End(xlUp).Row
For j = 2 To h
For i = 1 To UBound(arr)
If Cells(j, 1) = arr(i, 4) Then
Cells(j, 11) = arr(i, 16)
End If
Next i
Next j
End Sub
Sub c()
Dim arr, ph
ph = ThisWorkbook.Path
Workbooks.Open ph & "\仓库库存.xlsx"
arr = ActiveWorkbook.Sheets("sheet1").Cells(1, 1).CurrentRegion
Workbooks("仓库库存.xlsx").Close 0
Workbooks("自动报货表.xlsm").Activate
h = Range("A65536").End(xlUp).Row
For j = 2 To h
For i = 1 To UBound(arr)
If Cells(j, 1) = arr(i, 3) Then
Cells(j, 6) = arr(i, 12)
End If
Next i
Next j
End Sub
|
|