1234

ExcelHome技术论坛

用户名  找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

帖子
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 24580|回复: 67

[求助] Call 山菊花 & jsxjd & 香川群子老师、根据日程计划自动计算物料需求计划

[复制链接]

TA的精华主题

TA的得分主题

发表于 2014-9-3 17:05 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 Day-Day 于 2014-9-3 23:26 编辑

各位大虾:

依据日程计划中的数据、通过BOM清单中相对应的原材料、求得每日物料需求!
备注:根据日程计划、BOM表中的所需要的材料不一定要全部反映在物料需求表中,物料需求表中不体现的物料不需要自动计算

由于BOM表较大、希望通过利用VBA的形似解决!
物料需求計劃2.rar (80.71 KB, 下载次数: 100)
万分感谢!

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-9-3 17:41 | 显示全部楼层
本帖最后由 Day-Day 于 2014-9-3 18:47 编辑

在线急等!
希望各位前辈、斑竹、大虾们挤点时间帮帮ME

TA的精华主题

TA的得分主题

发表于 2014-9-3 18:55 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 99188407 于 2014-9-3 18:57 编辑

小妹我也需要这样的东东、希望有仁之士助之!
急...

点评

空间里显示为男,为什么要装装成小妹呢? 等够技术的有仁之士出手啊  发表于 2014-9-3 20:58

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-9-3 20:21 | 显示全部楼层
99188407 发表于 2014-9-3 18:55
小妹我也需要这样的东东、希望有仁之士助之!
急...

对啊,都没有人帮忙啊。55

TA的精华主题

TA的得分主题

发表于 2014-9-3 20:43 | 显示全部楼层
帮老乡做一个:
  1. Sub 更新()
  2. With Sheet3
  3.     r = .Cells(Rows.Count, 1).End(3).Row - 1
  4.     arr = .Range("A2:M" & r + 1) 'BOM数据
  5. End With
  6. Set dic1 = CreateObject("Scripting.Dictionary") '材料
  7. Set dic2 = CreateObject("Scripting.Dictionary") '产品
  8. For i = 2 To r
  9.     If Len(arr(i, 1)) > 0 Then
  10.         If Not dic1.exists(arr(i, 9)) Then
  11.             n1 = n1 + 1
  12.             dic1(arr(i, 9)) = n1
  13.         End If
  14.         If dic2.exists(arr(i, 1)) Then
  15.             dic2(arr(i, 1)) = Array(dic2(arr(i, 1))(0), i)
  16.         Else
  17.             dic2(arr(i, 1)) = Array(i, i)
  18.         End If
  19.     End If
  20. Next
  21. With Sheet1
  22.     endrow = .Cells(Rows.Count, 1).End(3).Row - 3
  23.     crr = .Range("A4:AK" & endrow + 3) '日程计划数据
  24. End With
  25. ReDim drr(1 To n1, 7 To 38)
  26. For i = 3 To endrow
  27.     If Len(crr(i, 1)) > 0 Then
  28.         For j = 7 To 37
  29.             If crr(i, j) > 0 Then
  30.                 qz = dic2(crr(i, 1)) '查产品对应BOM表的起止行号数组
  31.                 For k = qz(0) To qz(1)
  32.                     clxh = dic1(arr(k, 9))
  33.                     drr(clxh, j) = drr(clxh, j) + arr(k, 13) * crr(i, j)
  34.                     drr(clxh, 38) = drr(clxh, 38) + arr(k, 13) * crr(i, j)
  35.                 Next
  36.             End If
  37.         Next
  38.     End If
  39. Next
  40. With Sheet2
  41.     .UsedRange.Offset(5, 5).Resize(, 1).ClearContents
  42.     .UsedRange.Offset(5, 5).ClearContents
  43.     .[c6].Resize(dic1.Count, 1) = Application.Transpose(dic1.keys)
  44.     .[f6].Resize(n1, 32) = drr
  45. End With
  46. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2014-9-3 20:46 | 显示全部楼层
Day-Day 发表于 2014-9-3 20:21
对啊,都没有人帮忙啊。55

附件在此……。

物料需求計劃.rar

87.36 KB, 下载次数: 129

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-9-3 21:16 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 Day-Day 于 2014-9-3 21:21 编辑
cbtaja 发表于 2014-9-3 20:46
附件在此……。


非常感谢、但是如若需要固定物料的所在行,就会出现问题,烦请再修改一下下。
谢谢、另外补充一点:根据日程计划、BOM表中的所需要的材料不一定要全部反映在物料表中,只要物料表中有的材料名称计算就行!

物料需求計劃2.rar (84.4 KB, 下载次数: 24)

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-9-3 21:49 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
在线等啊、拜托。

TA的精华主题

TA的得分主题

发表于 2014-9-3 22:42 | 显示全部楼层
Day-Day 发表于 2014-9-3 21:16
非常感谢、但是如若需要固定物料的所在行,就会出现问题,烦请再修改一下下。
谢谢、另外补充一点:根 ...
  1. Sub 更新()
  2. Set dic1 = CreateObject("Scripting.Dictionary") '材料
  3. Set dic2 = CreateObject("Scripting.Dictionary") '产品
  4. r = Sheet2.Cells(Rows.Count, 3).End(3).Row
  5. arr = Sheet2.[c6].Resize(r - 5, 3)
  6. For i = 1 To UBound(arr)
  7.     If Len(arr(i, 1)) > 0 Then
  8.         dic1(arr(i, 1)) = i
  9.     Else
  10.         kcl = kcl + 1
  11.         dic1("(空材料)_" & kcl) = i
  12.     End If
  13. Next
  14. kcl = kcl + 1
  15. dic1("(空材料)_" & kcl) = i
  16. n1 = i ' + 1
  17. With Sheet3
  18.     r = .Cells(Rows.Count, 1).End(3).Row - 1
  19.     arr = .Range("A2:M" & r + 1) 'BOM数据
  20. End With
  21. For i = 2 To r
  22.     If Len(arr(i, 1)) > 0 Then
  23.         If Not dic1.exists(arr(i, 9)) Then
  24.             n1 = n1 + 1
  25.             dic1(arr(i, 9)) = n1
  26.         End If
  27.         If dic2.exists(arr(i, 1)) Then
  28.             dic2(arr(i, 1)) = Array(dic2(arr(i, 1))(0), i)
  29.         Else
  30.             dic2(arr(i, 1)) = Array(i, i)
  31.         End If
  32.     End If
  33. Next
  34. With Sheet1
  35.     endrow = .Cells(Rows.Count, 1).End(3).Row - 3
  36.     crr = .Range("A4:AK" & endrow + 3) '日程计划数据
  37. End With
  38. ReDim drr(1 To n1, 7 To 38)
  39. For i = 3 To endrow
  40.     If Len(crr(i, 1)) > 0 Then
  41.         For j = 7 To 37
  42.             If crr(i, j) > 0 Then
  43.                 qz = dic2(crr(i, 1)) '查产品对应BOM表的起止行号数组
  44.                 For k = qz(0) To qz(1)
  45.                     clxh = dic1(arr(k, 9))
  46.                     drr(clxh, j) = drr(clxh, j) + arr(k, 13) * crr(i, j)
  47.                     drr(clxh, 38) = drr(clxh, 38) + arr(k, 13) * crr(i, j)
  48.                 Next
  49.             End If
  50.         Next
  51.     End If
  52. Next
  53. With Sheet2
  54.     .UsedRange.Offset(5, 5).ClearContents
  55.     dkey = dic1.keys
  56.     For i = 0 To UBound(dkey)
  57.         If Left(dkey(i), 6) = "(空材料)_" Then dkey(i) = ""
  58.     Next
  59.     .[c6].Resize(dic1.Count, 1) = Application.Transpose(dkey)
  60.     .[f6].Resize(n1, 32) = drr
  61. End With
  62. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-9-3 23:07 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
cbtaja 发表于 2014-9-3 22:42

万分感谢,但是好像还是有点问题、例如去掉了物料需求表中的 "D-1-3”,为何底下又显示了此物料。
我的意思是:物料需求表中不显示的物料就不需要自动计算。烦请帮忙再修改一下。
真心不好意思
物料需求計劃2.rar (85.04 KB, 下载次数: 48)
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

1234

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-4-23 07:47 , Processed in 0.029648 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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