ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 关于生产间歇时间的算法,貌似函数无法解决,待大侠出招,如附件

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-5-31 12:09 | 显示全部楼层
sorry

[ 本帖最后由 buxunhua 于 2011-6-16 12:52 编辑 ]

TA的精华主题

TA的得分主题

发表于 2011-6-2 08:25 | 显示全部楼层
无语.
试试吧.

生产排程.rar

31.55 KB, 下载次数: 28

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-6-6 09:52 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

TA的精华主题

TA的得分主题

发表于 2011-6-6 10:53 | 显示全部楼层
说清楚你的细节,例如说,如果某个产品的结束时间是5-14 15:55,或者5-15 01:21,那么下一产品的开始时间是多少?

TA的精华主题

TA的得分主题

发表于 2011-6-6 14:36 | 显示全部楼层
'久候无回音,又要暂别eh了...
'算了,就这样吧..
'有不明白的自己在调试中添加监视,看看那些变量是怎么变化的就行了..
'细节自己慢慢完善
Sub lsftest()
Dim a(1 To 962), st, et As Date '建数组,用来装载每天工作的时间,以分钟为间隔,每天工作16小时,其实是962分钟.
'填入上午的工作时间
For i = 1 To 481
a(i) = DateAdd("n", i - 1, Cells(6, 7))
Next
'填入下午的时间
For i = 482 To 962
a(i) = DateAdd("n", i + 88, Cells(6, 7))
Next
st = Cells(6, 7)
b = Range("b" & Rows.Count).End(xlUp).Row
For j = 10 To b
'填入开始时间
Cells(j, 15) = st
'计算用时要多少天
dc = (Cells(j, 3) / (110 / Cells(j, 4) / 8) * 60) \ 962
'计算用时除却整数工作日后剩余的分钟数
mc = (Cells(j, 3) / (110 / Cells(j, 4) / 8) * 60) Mod 962
'有秒数的向上取整
If Int((Cells(j, 3) / (110 / Cells(j, 4) / 8) * 60)) <> (Cells(j, 3) / (110 / Cells(j, 4) / 8) * 60) Then mc = mc + 1
'计算开始时间对应于数组里的位置
If TimeValue(st) > TimeValue("3:00:00") Then
    If TimeValue(st) > TimeValue("16:00:00") Then
        c = DateDiff("n", TimeValue("8:00:00"), TimeValue(st)) - 88
    Else
        c = DateDiff("n", TimeValue("8:00:00"), TimeValue(st)) + 1
    End If
Else
        c = DateDiff("n", TimeValue("0:00:00"), TimeValue(st)) + 872
End If

'计算结果时间在数组里的位置:
If mc + c > 962 Then
'如果剩余分钟数超出了晚班下班时间,日期要加一,并减去一天工作的分钟数,再从数组开端数起
'例如,某天晚上23:00才开始新一批产品加工,这批产品总需时20小时,即其加工时间已经是横跨3天了..
dc = dc + 1
mc = mc + c - 962
Else
'如果剩余分钟数不超出一天,直接在数组里获取结束时间分钟数
mc = mc + c
End If
'计算结束时间的日期
et = DateAdd("d", dc, st)
'组合结束时间
rs = DateValue(et) + TimeValue(a(mc))
Cells(j, 16) = rs
'判断机号,如果是另一台机,从新开始计算
If Cells(j, 1) = Cells(j + 1, 1) Then
'换新产品加30分钟
st = DateAdd("n", 30, Cells(j, 16))
Else
st = Cells(6, 7)
End If
Next
End Sub

[ 本帖最后由 lsftest 于 2011-6-6 14:38 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-6-7 19:41 | 显示全部楼层
))))————————+++++++不可见 呵呵

[ 本帖最后由 buxunhua 于 2011-6-16 14:11 编辑 ]

TA的精华主题

TA的得分主题

发表于 2011-6-7 20:05 | 显示全部楼层
原帖由 buxunhua 于 2011-6-7 19:41 发表
恩 今天又上来看了 还是没人答的出来
呵呵  我知道  大家都不会这个

楼主这样对待帮助你的朋友未免有点那个了。
15楼的代码很好用啊

TA的精华主题

TA的得分主题

发表于 2011-6-11 19:53 | 显示全部楼层
12楼的附件都做好了。你就按一下按钮不行么?奇怪了。你是来踢站的么?这点小事,还来劲了,只要把逻辑理清就行了。
你说吧,12楼有什么问题,我来改。还真不信了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-6-16 12:43 | 显示全部楼层
大哥 你误会了  关于我在16楼得回复 我首先向你致以诚挚的道歉 那几天 我每天都上来看几次  但是没有看到解答 当然 也包括你在15楼得解答  我是真没看到  我确信 我是真没看到 除我之外的其他人的回复 所以习惯性的留了一句话 把帖子顶上去  后来 见没人回答 也就没有关注 这个问题了  工作中 我自己用辅助的方法演算的  今天下午没上班 就来看看  莫名奇妙的就看到你在15楼得回复了  不管怎样 请恕小弟无礼了

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-6-16 12:44 | 显示全部楼层

回复 17楼 northwolves 的帖子

尊敬的斑竹先生  我记得自己回复的时候  真没看见15楼大哥的帖子  今天忽然就冒出来了  呵呵  对不起 小弟粗心了
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-23 04:46 , Processed in 0.047025 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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