|
本帖最后由 cbtaja 于 2014-9-3 23:35 编辑
Day-Day 发表于 2014-9-3 23:07 
万分感谢,但是好像还是有点问题、例如去掉了物料需求表中的 "D-1-3”,为何底下又显示了此物料。
我的意 ... - Sub 更新()
- Set dic1 = CreateObject("Scripting.Dictionary") '材料
- Set dic2 = CreateObject("Scripting.Dictionary") '产品
- r = Sheet2.Cells(Rows.Count, 3).End(3).Row
- arr = Sheet2.[c6].Resize(r - 5, 3)
- For i = 1 To UBound(arr)
- If Len(arr(i, 1)) > 0 Then
- dic1(arr(i, 1)) = i
- Else
- kcl = kcl + 1
- dic1("(空材料)_" & kcl) = i
- End If
- Next
- n1 = i -1
- With Sheet3
- r = .Cells(Rows.Count, 1).End(3).Row - 1
- arr = .Range("A2:M" & r + 1) 'BOM数据
- End With
- For i = 2 To r
- If Len(arr(i, 1)) > 0 Then
- If dic2.exists(arr(i, 1)) Then
- dic2(arr(i, 1)) = Array(dic2(arr(i, 1))(0), i)
- Else
- dic2(arr(i, 1)) = Array(i, i)
- End If
- End If
- Next
- With Sheet1
- endrow = .Cells(Rows.Count, 1).End(3).Row - 3
- crr = .Range("A4:AK" & endrow + 3) '日程计划数据
- End With
- ReDim drr(1 To n1, 7 To 38)
- For i = 3 To endrow
- If Len(crr(i, 1)) > 0 Then
- For j = 7 To 37
- If crr(i, j) > 0 Then
- qz = dic2(crr(i, 1)) '查产品对应BOM表的起止行号数组
- For k = qz(0) To qz(1)
- If dic1.exists(arr(k, 9)) Then
- clxh = dic1(arr(k, 9))
- drr(clxh, j) = drr(clxh, j) + arr(k, 13) * crr(i, j)
- drr(clxh, 38) = drr(clxh, 38) + arr(k, 13) * crr(i, j)
- End If
- Next
- End If
- Next
- End If
- Next
- With Sheet2
- .UsedRange.Offset(5, 5).ClearContents
- .[f6].Resize(n1, 32) = drr
- End With
- End Sub
复制代码 |
|