Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 6966|回复: 16

[已解决]BOM分解计算需求

[复制链接]
发表于 2017-5-10 15:11 | 显示全部楼层 |阅读模式
本帖最后由 bracy 于 2017-5-24 16:09 编辑

请各位老师帮助,通过VBA在需求子表中制作一个按钮,能通过产品需求数量子表中的产品数量,用材料消耗定额计算出各零件的材料用量。PS.不同产品的共用材料需汇总到一起。
    先谢谢各位老师~

需求

需求

产品需求数量

产品需求数量

BOM

BOM

最佳答案
2017-5-17 12:42
  1. Sub aaa()
  2. Dim arr, brr, crr(1 To 1000, 1 To 3), i&, j&, d As Object, r&
  3. Set d = CreateObject("scripting.dictionary")
  4. arr = Sheets(1).[a1].CurrentRegion
  5. brr = Sheets(2).[a1].CurrentRegion
  6. For i = 2 To UBound(brr)
  7.   For j = 2 To UBound(arr)
  8.     If arr(j, 1) = brr(i, 1) Then
  9.       If Not d.exists(arr(j, 2)) Then
  10.         r = r + 1
  11.         d(arr(j, 2)) = r
  12.         crr(r, 1) = arr(j, 2)
  13.         crr(r, 2) = arr(j, 3)
  14.       End If
  15.       crr(d(arr(j, 2)), 3) = crr(d(arr(j, 2)), 3) + brr(i, 2) * arr(j, 4)
  16.     End If
  17.   Next j
  18. Next i
  19. Sheets(3).[a2].Resize(r, 3) = crr
  20. End Sub回复前一个要求,后一个还没看。
复制代码
发表于 2017-5-10 15:14 | 显示全部楼层
回复

使用道具 举报

发表于 2017-5-10 15:28 | 显示全部楼层
都已经 BOM 了 , 不直接 ERP么 ?  不建议自己折腾
回复

使用道具 举报

 楼主| 发表于 2017-5-10 15:40 | 显示全部楼层

忘记挂附件了,不好意思~

BOM分解计算需求0510.zip

29 KB, 下载次数: 67

回复

使用道具 举报

 楼主| 发表于 2017-5-10 15:41 | 显示全部楼层
砂海 发表于 2017-5-10 15:28
都已经 BOM 了 , 不直接 ERP么 ?  不建议自己折腾

以前上了一套,已经废了,现在当进销存用。。。。。
回复

使用道具 举报

 楼主| 发表于 2017-5-11 10:36 | 显示全部楼层
有没有老师帮忙看下~
回复

使用道具 举报

发表于 2017-5-11 13:00 | 显示全部楼层
产品需求数都是3,怎么你的结果是5、7、9,这个应该是产品需求数1的用量,你自己计算下看看。
代码我已经写好,就看你怎么想的,如果只需要每种制品1套的零件数,那我就修改一下发上来。
回复

使用道具 举报

 楼主| 发表于 2017-5-17 10:15 | 显示全部楼层
大灰狼1976 发表于 2017-5-11 13:00
产品需求数都是3,怎么你的结果是5、7、9,这个应该是产品需求数1的用量,你自己计算下看看。
代码我已经 ...

谢谢老师,前段时间没来得及回复,确实是附件做错了,应该是根据产品数量的不同,需求里面的数量会发生变化,请老师把代码发上来让我学习下,谢谢~
回复

使用道具 举报

 楼主| 发表于 2017-5-17 10:35 | 显示全部楼层
大灰狼1976 发表于 2017-5-11 13:00
产品需求数都是3,怎么你的结果是5、7、9,这个应该是产品需求数1的用量,你自己计算下看看。
代码我已经 ...

老师,另外我发现一个和我们需求一样的案例,但一直都没人能做出来,能麻烦一起看下吗?谢谢~

10物料需求计算 - 副本.rar

45.08 KB, 下载次数: 45

回复

使用道具 举报

发表于 2017-5-17 12:42 | 显示全部楼层    本楼为最佳答案   
  1. Sub aaa()
  2. Dim arr, brr, crr(1 To 1000, 1 To 3), i&, j&, d As Object, r&
  3. Set d = CreateObject("scripting.dictionary")
  4. arr = Sheets(1).[a1].CurrentRegion
  5. brr = Sheets(2).[a1].CurrentRegion
  6. For i = 2 To UBound(brr)
  7.   For j = 2 To UBound(arr)
  8.     If arr(j, 1) = brr(i, 1) Then
  9.       If Not d.exists(arr(j, 2)) Then
  10.         r = r + 1
  11.         d(arr(j, 2)) = r
  12.         crr(r, 1) = arr(j, 2)
  13.         crr(r, 2) = arr(j, 3)
  14.       End If
  15.       crr(d(arr(j, 2)), 3) = crr(d(arr(j, 2)), 3) + brr(i, 2) * arr(j, 4)
  16.     End If
  17.   Next j
  18. Next i
  19. Sheets(3).[a2].Resize(r, 3) = crr
  20. End Sub回复前一个要求,后一个还没看。
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-20 18:29 , Processed in 0.542317 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表