ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 根据生产计划表,用量基准表,计算对应日期的耗材用量

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-4-27 20:59 | 显示全部楼层 |阅读模式
本帖最后由 小白兔3399 于 2023-4-27 22:58 编辑

大家好:

我想根据生产排产数量,用量基准,计算对应日期的耗材用量,有劳各位大神看看能不能用VBA做出来呀,
这是工作中的一项常态化的工作,实际数据量是比较大的,如果能用VBA处理就太好了,工作会极大减轻。非常感谢 耗材用量表.zip (22.92 KB, 下载次数: 10)

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-4-27 21:04 | 显示全部楼层
image.png

TA的精华主题

TA的得分主题

发表于 2023-4-28 05:19 | 显示全部楼层
来来收货了

耗材用量表.zip

39.95 KB, 下载次数: 7

TA的精华主题

TA的得分主题

发表于 2023-4-28 05:22 | 显示全部楼层
我杂就上传不了呢


image.png

耗材用量表.zip

39.95 KB, 下载次数: 19

TA的精华主题

TA的得分主题

发表于 2023-4-28 05:24 | 显示全部楼层
Private Sub CommandButton1_Click() t = Timer With Sheets("生产计划")     生产计划 = .Range(.UsedRange.Address) End With With Sheets("基准表")     基准表 = .Range(.UsedRange.Address) End With  Dim 半成1 As Range, 部门1 As Range, 半成2 As Range, 耗材1 As Range, 单耗1 As Range Dim r半成 As Long, r部门 As Long, c半成 As Long, c部门 As Long, r半成2 As Long, r耗材 As Long, r单耗 As Long, c半成2 As Long, c耗材 As Long, c单耗 As Long, kk As Long, k As Long, i As Long, ii As Long, ooo As Long, iii As Long Set 半成1 = Sheets("生产计划").Range("1:5").Find("半成品") Set 部门1 = Sheets("生产计划").Range("1:5").Find("部门名称") Set 半成2 = Sheets("基准表").Range("1:5").Find("半成品") Set 耗材1 = Sheets("基准表").Range("1:5").Find("耗材料号") Set 单耗1 = Sheets("基准表").Range("1:5").Find("单耗")  If Not 半成1 Is Nothing Or Not 部门1 Is Nothing Or Not 半成2 Is Nothing Or Not 耗材1 Is Nothing Or Not 单耗1 Is Nothing Then     r半成 = 半成1.Row     r部门 = 部门1.Row     If r半成 = r部门 Then         c半成 = 半成1.Column         c部门 = 部门1.Column         Else         MsgBox "请检 生产计划中的1到5行中是否存在半成品》部门名称 "         Exit Sub     End If     r半成2 = 半成2.Row     r耗材 = 耗材1.Row     r单耗 = 单耗1.Row     If r半成2 = r耗材 And r耗材 = r单耗 Then         c半成2 = 半成2.Column         c耗材 = 耗材1.Column         c单耗 = 单耗1.Column         Else         MsgBox "请检查 基准表 中的1到5行中是否存在 半成品》》耗材料号 》单耗字段"         Exit Sub     End If End If For oo = 1 To UBound(生产计划, 2)     If IsDate(生产计划(r半成, oo)) Then     k = k + 1   Sheets("标准用量").Cells(2, 7 + k) = 生产计划(r半成, oo)     End If Next For ooo = 1 To UBound(生产计划, 2)     If IsDate(生产计划(r半成, ooo)) Then     ooo = ooo - 1     GoTo 11     End If Next 11: ReDim 标准用量(1 To UBound(生产计划, 1), 1 To 7 + k) For i = r半成 + 1 To UBound(生产计划, 1)     标准用量(i - 2, 2) = 生产计划(i, c部门)     标准用量(i - 2, 3) = 生产计划(i, c半成)     标准用量(i - 2, 1) = "检查基准表"     For ii = r半成2 + 1 To UBound(基准表, 1)         If 生产计划(i, c半成) = 基准表(ii, c半成2) Then             标准用量(i - 2, 1) = 基准表(ii, c耗材)             For iii = 1 To k             标准用量(i - 2, 7 + iii) = 基准表(ii, c单耗) * 生产计划(i, ooo + iii)             Next iii             GoTo 111         End If     Next 111: Next Sheets("标准用量").Cells(2, 1).Resize(UBound(标准用量), UBound(标准用量, 2)).Borders.LineStyle = xlContinuous Sheets("标准用量").Cells(3, 1).Resize(UBound(标准用量), UBound(标准用量, 2)) = 标准用量 Sheets("标准用量").Cells(3, 1).Resize(UBound(标准用量), UBound(标准用量, 2)) = 标准用量 t = Timer - t MsgBox "耗时" & t End Sub

TA的精华主题

TA的得分主题

发表于 2023-4-28 05:26 | 显示全部楼层
  1. Private Sub CommandButton1_Click()
  2. t = Timer
  3. With Sheets("生产计划")
  4.     生产计划 = .Range(.UsedRange.Address)
  5. End With
  6. With Sheets("基准表")
  7.     基准表 = .Range(.UsedRange.Address)
  8. End With
  9. Dim 半成1 As Range, 部门1 As Range, 半成2 As Range, 耗材1 As Range, 单耗1 As Range
  10. Dim r半成 As Long, r部门 As Long, c半成 As Long, c部门 As Long, r半成2 As Long, r耗材 As Long, r单耗 As Long, c半成2 As Long, c耗材 As Long, c单耗 As Long, kk As Long, k As Long, i As Long, ii As Long, ooo As Long, iii As Long
  11. Set 半成1 = Sheets("生产计划").Range("1:5").Find("半成品")
  12. Set 部门1 = Sheets("生产计划").Range("1:5").Find("部门名称")
  13. Set 半成2 = Sheets("基准表").Range("1:5").Find("半成品")
  14. Set 耗材1 = Sheets("基准表").Range("1:5").Find("耗材料号")
  15. Set 单耗1 = Sheets("基准表").Range("1:5").Find("单耗")

  16. If Not 半成1 Is Nothing Or Not 部门1 Is Nothing Or Not 半成2 Is Nothing Or Not 耗材1 Is Nothing Or Not 单耗1 Is Nothing Then
  17.     r半成 = 半成1.Row
  18.     r部门 = 部门1.Row
  19.     If r半成 = r部门 Then
  20.         c半成 = 半成1.Column
  21.         c部门 = 部门1.Column
  22.         Else
  23.         MsgBox "请检 生产计划中的1到5行中是否存在半成品》部门名称 "
  24.         Exit Sub
  25.     End If
  26.     r半成2 = 半成2.Row
  27.     r耗材 = 耗材1.Row
  28.     r单耗 = 单耗1.Row
  29.     If r半成2 = r耗材 And r耗材 = r单耗 Then
  30.         c半成2 = 半成2.Column
  31.         c耗材 = 耗材1.Column
  32.         c单耗 = 单耗1.Column
  33.         Else
  34.         MsgBox "请检查 基准表 中的1到5行中是否存在 半成品》》耗材料号 》单耗字段"
  35.         Exit Sub
  36.     End If
  37. End If
  38. For oo = 1 To UBound(生产计划, 2)
  39.     If IsDate(生产计划(r半成, oo)) Then
  40.     k = k + 1
  41.   Sheets("标准用量").Cells(2, 7 + k) = 生产计划(r半成, oo)
  42.     End If
  43. Next
  44. For ooo = 1 To UBound(生产计划, 2)
  45.     If IsDate(生产计划(r半成, ooo)) Then
  46.     ooo = ooo - 1
  47.     GoTo 11
  48.     End If
  49. Next
  50. 11:
  51. ReDim 标准用量(1 To UBound(生产计划, 1), 1 To 7 + k)
  52. For i = r半成 + 1 To UBound(生产计划, 1)
  53.     标准用量(i - 2, 2) = 生产计划(i, c部门)
  54.     标准用量(i - 2, 3) = 生产计划(i, c半成)
  55.     标准用量(i - 2, 1) = "检查基准表"
  56.     For ii = r半成2 + 1 To UBound(基准表, 1)
  57.         If 生产计划(i, c半成) = 基准表(ii, c半成2) Then
  58.             标准用量(i - 2, 1) = 基准表(ii, c耗材)
  59.             For iii = 1 To k
  60.             标准用量(i - 2, 7 + iii) = 基准表(ii, c单耗) * 生产计划(i, ooo + iii)
  61.             Next iii
  62.             GoTo 111
  63.         End If
  64.     Next
  65. 111:
  66. Next
  67. Sheets("标准用量").Cells(2, 1).Resize(UBound(标准用量), UBound(标准用量, 2)).Borders.LineStyle = xlContinuous
  68. Sheets("标准用量").Cells(3, 1).Resize(UBound(标准用量), UBound(标准用量, 2)) = 标准用量
  69. Sheets("标准用量").Cells(3, 1).Resize(UBound(标准用量), UBound(标准用量, 2)) = 标准用量
  70. t = Timer - t
  71. MsgBox "耗时" & t
  72. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-4-28 21:00 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2023-4-28 21:11 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
标准用量(i - 2, 1) = "检查基准表"  
可注释掉这一句

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-4-28 21:57 | 显示全部楼层
本帖最后由 小白兔3399 于 2023-4-29 09:44 编辑
银河懒麒麟 发表于 2023-4-28 21:11
标准用量(i - 2, 1) = "检查基准表"  
可注释掉这一句

如注释掉这一句单元格就空在那里了,这不是我想要的效果哟

是我的需求表述的不清楚:


标准用量表的半成品料号和耗材的料号以及部门是手动填进去的,这个地方不要自动导入
也就是说程序只需根据我手动填入的料号,查找排产表和基准表,有匹配的上的就计划用量,没有匹配的上的,用量就填0。 麻烦老师了。
备注:基准表中,同一个半成品里面会有N个耗材料号

TA的精华主题

TA的得分主题

发表于 2023-4-30 02:27 | 显示全部楼层
是这样么??

耗材用量.rar

42.12 KB, 下载次数: 9

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

本版积分规则

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

GMT+8, 2024-11-17 05:45 , Processed in 0.046787 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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