ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 多表查询工时计算求助

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-7-14 17:44 | 显示全部楼层 |阅读模式
本帖最后由 yniu88 于 2018-7-14 21:05 编辑

从ERP导出数据,后要根据订单号查询到对应的物料ID,然后查到对应的工艺路线,根据工艺路线ID查找到对应的标准工时。
最后得出该订单各个工序的标准工时。
觉得应该能够用VBA来实现,如果可以利用多重数据透视表实现也好。
希望得到大家的帮助和指点,谢谢!

001.jpg

test.rar

15.51 KB, 下载次数: 8

test

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-7-14 22:47 | 显示全部楼层
请指点一下,谢谢!

TA的精华主题

TA的得分主题

发表于 2018-7-15 09:54 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
请见代码。
2018-7-15工序.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-7-15 13:34 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-7-15 23:48 | 显示全部楼层
本帖最后由 yniu88 于 2018-7-16 00:52 编辑

蓝版主,谢谢您的代码。
我输入以后发现有个功能还没有达到。
就是如果这个产品有若干个物料,代码始终只能找到第一个物料并进行展开。如果是多个就无法运行了,试了下FINDNEXT函数改了下不行。
麻烦蓝版主请再指点一下。
另外如果能够在插入每一行的A列填入对应的订单分序号就更好了,谢谢!

test-new.rar

22.55 KB, 下载次数: 7

test-new

TA的精华主题

TA的得分主题

发表于 2018-7-16 09:39 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
请见代码。
  1. Dim xh$, Arr00, n&
  2. Dim wl, sl, r1, gx, Arr02, jt, yl, d1
  3. Private Sub Worksheet_Change(ByVal Target As Range)
  4. If Target.Count > 1 Then Exit Sub
  5. If Target = "" Then Exit Sub
  6. If Target.Column <> 1 Or Target.Row < 2 Then Exit Sub
  7. Dim i&, t, aa, j&
  8. Application.EnableEvents = False
  9. xh = Target.Value: n = Target.Row - 1
  10. Set d = CreateObject("Scripting.Dictionary")
  11. Set d1 = CreateObject("Scripting.Dictionary")
  12. Arr00 = Sheet3.[a1].CurrentRegion
  13. For i = 3 To UBound(Arr00)
  14.     d(Arr00(i, 16)) = d(Arr00(i, 16)) & i & ","
  15. Next
  16. Arr02 = Sheet5.[a1].CurrentRegion
  17. For i = 3 To UBound(Arr02)
  18.     d1(Arr02(i, 2)) = d1(Arr02(i, 2)) & i & ","
  19. Next
  20. If d.exists(xh) Then
  21.     t = d(xh)
  22.     t = Left(t, Len(t) - 1)
  23.     If InStr(t, ",") Then
  24.         aa = Split(t, ",")
  25.         For j = 0 To UBound(aa)
  26.             Call yy(aa(j))
  27.         Next
  28.     Else
  29.         Call yy(t)
  30.     End If
  31. End If
  32. Application.EnableEvents = True
  33. End Sub
  34. Sub yy(i)
  35. Dim tt, aa, j&, r1
  36.     wl = Arr00(i, 27): sl = Arr00(i, 6)
  37.     Set r1 = Sheet4.[c:c].Find(wl, , , 1)
  38.     If Not r1 Is Nothing Then
  39.         gx = r1.Offset(0, -1).Value
  40.         If d1.exists(gx) Then
  41.             tt = d1(gx)
  42.             tt = Left(tt, Len(tt) - 1)
  43.             If InStr(tt, ",") Then
  44.                 aa = Split(tt, ",")
  45.                 For j = 0 To UBound(aa)
  46.                     jt = Arr02(aa(j), 1)
  47.                     Call fz(jt)
  48.                 Next
  49.             Else
  50.                 jt = Arr02(tt, 1)
  51.                 Call fz(jt)
  52.             End If
  53.         End If
  54.     End If

  55. End Sub
  56. Sub fz(jt)
  57. Dim r1
  58.             Set r1 = Sheet6.[a:a].Find(jt, , , 1)
  59.             If Not r1 Is Nothing Then
  60.                 yl = Sheet6.Cells(r1.Row, 7)
  61.                 n = n + 1
  62.                 Cells(n, 1) = xh
  63.                 Cells(n, 2) = wl
  64.                 Cells(n, 3) = sl
  65.                 Cells(n, 4) = gx
  66.                 Cells(n, 5) = jt
  67.                 Cells(n, 6) = yl
  68.                 Cells(n, 7) = sl / yl * 60
  69.             End If

  70. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-7-20 17:06 | 显示全部楼层
本帖最后由 yniu88 于 2018-7-20 17:11 编辑

蓝版主,您好。所以对于一个产品有多个物料,每个物料有不同工艺路线的时候会出现查找错误。我看了下代码,应该是少了一个对于sheet5的对应查找没有列出,导致第二个物料的第二个工时无法查出列出。似乎应该再加一个子程序查找循环?(代码中只查了sheet3,4,6,sheet5没有出现。而这张表是有用的)请指教。
正确运行结果应该能够如图的4行数据。
000.jpg

test-new.rar

21.97 KB, 下载次数: 2

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-7-24 13:32 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

查出问题了,代码正确。是我这边的源数据存在疏漏。请版主帮忙删掉错误的回复。
抱歉!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-23 22:13 , Processed in 0.043518 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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