1234

ExcelHome技术论坛

用户名  找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

[复制链接]

TA的精华主题

TA的得分主题

发表于 2014-9-3 23:22 | 显示全部楼层
本帖最后由 cbtaja 于 2014-9-3 23:35 编辑
Day-Day 发表于 2014-9-3 23:07
万分感谢,但是好像还是有点问题、例如去掉了物料需求表中的 "D-1-3”,为何底下又显示了此物料。
我的意 ...
  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. n1 = i -1
  15. With Sheet3
  16.     r = .Cells(Rows.Count, 1).End(3).Row - 1
  17.     arr = .Range("A2:M" & r + 1) 'BOM数据
  18. End With
  19. For i = 2 To r
  20.     If Len(arr(i, 1)) > 0 Then
  21.         If dic2.exists(arr(i, 1)) Then
  22.             dic2(arr(i, 1)) = Array(dic2(arr(i, 1))(0), i)
  23.         Else
  24.             dic2(arr(i, 1)) = Array(i, i)
  25.         End If
  26.     End If
  27. Next
  28. With Sheet1
  29.     endrow = .Cells(Rows.Count, 1).End(3).Row - 3
  30.     crr = .Range("A4:AK" & endrow + 3) '日程计划数据
  31. End With
  32. ReDim drr(1 To n1, 7 To 38)
  33. For i = 3 To endrow
  34.     If Len(crr(i, 1)) > 0 Then
  35.         For j = 7 To 37
  36.             If crr(i, j) > 0 Then
  37.                 qz = dic2(crr(i, 1)) '查产品对应BOM表的起止行号数组
  38.                 For k = qz(0) To qz(1)
  39.                     If dic1.exists(arr(k, 9)) Then
  40.                         clxh = dic1(arr(k, 9))
  41.                         drr(clxh, j) = drr(clxh, j) + arr(k, 13) * crr(i, j)
  42.                         drr(clxh, 38) = drr(clxh, 38) + arr(k, 13) * crr(i, j)
  43.                     End If
  44.                 Next
  45.             End If
  46.         Next
  47.     End If
  48. Next
  49. With Sheet2
  50.     .UsedRange.Offset(5, 5).ClearContents
  51.     .[f6].Resize(n1, 32) = drr
  52. End With
  53. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2014-9-4 06:51 | 显示全部楼层
本帖最后由 yiyiyicz 于 2014-9-4 06:56 编辑

根据日程计划自动计算物料需求计划
这是比较专业的问题,数学计算在其中仅仅是工具,关键是“如何做计划”需要掌握原理并且灵活运用
你这不是难为“老师”吗?
在生产板块,“桃木剑”擅长这个

说句不好听的,如果要达到实用的程度,在EH中还真没见过切实可行的代码。代码不过500行肯定办不到!

点评

排计划很难、但根据排好的计划分解计算各种材料用量需求则非常简单!  发表于 2014-9-4 11:48

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-9-4 10:26 来自手机 | 显示全部楼层
yiyiyicz 发表于 2014-9-4 06:51
根据日程计划自动计算物料需求计划
这是比较专业的问题,数学计算在其中仅仅是工具,关键是“如何做计划” ...

前辈,言重了!这个只是单层Bom,没有您说得那么复杂。用函数只需要过度一下就能解决了(现已解决),由于数据较大,函数操作有点卡、故拜托前辈们用VB的形式。

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-9-4 10:34 来自手机 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
cbtaja 发表于 2014-9-3 23:22

非常感谢老乡的帮助,希望您能在修改一下,如果物料需求表中的”材料名‘’列空白项就不要参与计算了。因为第75行开始为合计上面的数据,另外只需要运算到AJ列即可。Al列需要做一些备注之类的。

TA的精华主题

TA的得分主题

发表于 2014-9-4 10:57 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
11楼代码应该没问题了。(如果计算量大,还需优化以提高速度)

…………
我这里上一个Microsoft Office Access 数据库 的应用。

推荐用数据库解决此类问题。
增添、修改、检索都非常方便,查询结果也可以很方便地转为Excel工作簿文件。


EDP_Plan.zip

2.01 KB, 下载次数: 86

EDP.zip

32.76 KB, 下载次数: 76

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-9-4 11:04 来自手机 | 显示全部楼层
本帖最后由 Day-Day 于 2014-9-4 11:14 编辑
香川群子 发表于 2014-9-4 10:57
11楼代码应该没问题了。(如果计算量大,还需优化以提高速度)

…………


运行没有大问题,希望您能再修改一下,如果物料需求表中的”材料名‘’列空白项(没有材料名)就不要参与计算了。因为第75行开始为合计上面的数据,现有代码自动计算了含空白的材料名列。另外只需要运算到AJ列即可。Al列需要做一些备注之类的。   (备注:列不会曾加,可以固定到AJ列,但是行也许要添加新的的物料,所以只要自动计算非空白的物料即可。)

TA的精华主题

TA的得分主题

发表于 2014-9-4 11:31 | 显示全部楼层
关于15楼Microsoft Office 的 Access数据库文件,
如果楼主愿意学习、今后逐步使用数据库,我可以慢慢教会楼主。

…………
如果楼主说:算了,我还是一直用Excel+VBA吧……那我就不解释了。呵呵。

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-9-4 11:35 来自手机 | 显示全部楼层
香川群子 发表于 2014-9-4 11:31
关于15楼Microsoft Office 的 Access数据库文件,
如果楼主愿意学习、今后逐步使用数据库,我可以慢慢教会 ...

以后慢慢学习啊,但是现在这个比较急啊!还望老师不吝赐教。拜托……烦请帮忙修订一下吧!万分感激!

TA的精华主题

TA的得分主题

发表于 2014-9-4 11:42 | 显示全部楼层
Day-Day 发表于 2014-9-4 11:35
以后慢慢学习啊,但是现在这个比较急啊!还望老师不吝赐教。拜托……烦请帮忙修订一下吧!万分感激!

以后慢慢学 = 我不想学啊!

…………
现在这个比较急……11楼 【cbtaja】的代码应该没问题。

如果有问题你也可以手工修改一下用起来的。呵呵。



TA的精华主题

TA的得分主题

 楼主| 发表于 2014-9-4 11:46 来自手机 | 显示全部楼层
香川群子 发表于 2014-9-4 11:42
以后慢慢学 = 我不想学啊!

…………

关键我们公司现在还没有装Access,并不是不想学习,现在还在学习VBA,循序渐进啊。当前真的非常着急,拜托老是就不要逗我啦!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

1234

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

GMT+8, 2025-4-23 08:27 , Processed in 0.039712 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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