Rất cám ơn bạn,file bạn mình test các kiểu rồi :làm rất đạt.Cám ơn bạn đã tham gia.Bạn kiểm file mình làm bằng công thức xem có đáp ứng được yêu cầu của bạn không
Rất cám ơn bạn,file bạn mình test các kiểu rồi :làm rất đạt.Cám ơn bạn đã tham gia.Bạn kiểm file mình làm bằng công thức xem có đáp ứng được yêu cầu của bạn không
BeginTime = (BeginDate - Int(BeginDate)) * 24
BeginTime = Hour(BeginDate) + Minute(BeginDate) / 60 + Second(BeginDate) / 3600
Dạ cám ơn Thầy nhiều.Em chỉ cần kết quả đến phút là đạt lắm rồi.Thầy làm đến cả giây thì thật là wá chính xác (rất cám ơn nhiệt tình của Thầy )Sai sót do lỗi anh Bill mà ta không lường được.
BeginDate = 04/12/2010 12:30:00
BeginTime = (BeginDate - Int(BeginDate)) * 24
Lẽ ra phải bằng 12.5, thế mà nó ra là 12.5000000000582, 1 sai số vô cùng nhỏ. Từ đó tính ra số giờ làm việc còn lại trong ngày đó là
TimeAtDate = 3,99999999994179
WorkTime = 4.0 tròn, mà giờ còn lại trong ngày thì không đủ 4, nên còn 0.0000000000582 giờ phải chuyển sang ngày hôm sau, hôm sau là chủ nhật, nên thứ 2 phải làm tiếp 0.0000000000582 giờ nữa mới hoàn thành.
Hic, anh Bill ơi là anh Bill!
Nên phải thay câu:
bằng câu:PHP:BeginTime = (BeginDate - Int(BeginDate)) * 24
PHP:BeginTime = Hour(BeginDate) + Minute(BeginDate) / 60 + Second(BeginDate) / 3600
Bạn có thể kiểm chứng trên file. Ngoài ra, với ngày giờ bắt đầu là 04/12/2010 12:30:00, thời gian cần làm công việc là 4 giờ, kết quả là thứ bảy 04/12/2010 16:30:00. Chỉ cần bạn thêm 1 giây vào thời gian làm việc thành 4:00:01, giờ hoàn thành sẽ là thứ hai 06/12/2010 07:30:01
[COLOR=#000000][COLOR=#007700]Function [/COLOR][COLOR=#0000bb]GetEndPoint[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]BeginDate[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000bb]WorkTime[/COLOR][COLOR=#007700])
[/COLOR][COLOR=#0000bb]Dim EsDate [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000bb]Long[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000bb]WdBegDate [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000bb]Long[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000bb]RestTime [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000bb]Single
Dim TimeAtDate[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000bb]AddDays[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000bb]BeginTime[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000bb]AddWeeks[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000bb]TotalDaysAdded
[/COLOR][COLOR=#007700]Const [/COLOR][COLOR=#0000bb]BeginMor [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]7.5[/COLOR][COLOR=#007700]: Const [/COLOR][COLOR=#0000bb]EndMor [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]11.5
[/COLOR][COLOR=#007700]Const [/COLOR][COLOR=#0000bb]BeginAft [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]12.5[/COLOR][COLOR=#007700]: Const [/COLOR][COLOR=#0000bb]EndAft [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]16.5
[/COLOR][COLOR=#007700]Const Break = [/COLOR][COLOR=#0000bb]1[/COLOR][COLOR=#007700]: Const [/COLOR][COLOR=#0000bb]DayWTime [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]8[/COLOR][COLOR=#007700]: Const [/COLOR][COLOR=#0000bb]WeekWTime [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]48
WdBegDate [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]Weekday[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]BeginDate[/COLOR][COLOR=#007700])
[/COLOR][COLOR=#0000bb]BeginTime [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]Hour[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]BeginDate[/COLOR][COLOR=#007700]) + [/COLOR][COLOR=#0000bb]Minute[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]BeginDate[/COLOR][COLOR=#007700]) / [/COLOR][COLOR=#0000bb]60 [/COLOR][COLOR=#007700]+ [/COLOR][COLOR=#0000bb]Second[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]BeginDate[/COLOR][COLOR=#007700]) / [/COLOR][COLOR=#0000bb]3600
TimeAtDate [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]IIf[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]BeginTime [/COLOR][COLOR=#007700]<= [/COLOR][COLOR=#0000bb]EndMor[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000bb]EndAft [/COLOR][COLOR=#007700]- Break, [/COLOR][COLOR=#0000bb]EndAft[/COLOR][COLOR=#007700]) - [/COLOR][COLOR=#0000bb]BeginTime
[/COLOR][COLOR=#007700]If [/COLOR][COLOR=#0000bb]TimeAtDate [/COLOR][COLOR=#007700]>= [/COLOR][COLOR=#0000bb]WorkTime Then
GetEndPoint [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]BeginDate [/COLOR][COLOR=#007700]+ [/COLOR][COLOR=#0000bb]WorkTime [/COLOR][COLOR=#007700]/ [/COLOR][COLOR=#0000bb]24 [/COLOR][COLOR=#007700]+ [/COLOR][COLOR=#0000bb]_
IIf[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]BeginTime [/COLOR][COLOR=#007700]<= [/COLOR][COLOR=#0000bb]EndMor [/COLOR][COLOR=#007700]And [/COLOR][COLOR=#0000bb]BeginTime [/COLOR][COLOR=#007700]+ [/COLOR][COLOR=#0000bb]WorkTime [/COLOR][COLOR=#007700]> [/COLOR][COLOR=#0000bb]EndMor[/COLOR][COLOR=#007700], Break / [/COLOR][COLOR=#0000bb]24[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000bb]0[/COLOR][COLOR=#007700])
Exit Function
Else
[/COLOR][COLOR=#0000bb]RestTime [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]WorkTime [/COLOR][COLOR=#007700]- [/COLOR][COLOR=#0000bb]TimeAtDate
AddWeeks [/COLOR][COLOR=#007700]= ([/COLOR][COLOR=#0000bb]RestTime \ WeekWTime[/COLOR][COLOR=#007700])
[/COLOR][COLOR=#0000bb]TotalDaysAdded [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]7 [/COLOR][COLOR=#007700]* [/COLOR][COLOR=#0000bb]AddWeeks
RestTime [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]RestTime [/COLOR][COLOR=#007700]- [/COLOR][COLOR=#0000bb]WeekWTime [/COLOR][COLOR=#007700]* [/COLOR][COLOR=#0000bb]AddWeeks
AddDays [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]RestTime \ DayWTime [/COLOR][/COLOR]
[COLOR=#000000][COLOR=#0000bb] RestTime [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]RestTime [/COLOR][COLOR=#007700]- [/COLOR][COLOR=#0000bb]AddDays [/COLOR][COLOR=#007700]* [/COLOR][COLOR=#0000bb]DayWTime[/COLOR][/COLOR][COLOR=#000000][COLOR=#0000bb]
TotalDaysAdded [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]TotalDaysAdded [/COLOR][COLOR=#007700]+ [/COLOR][COLOR=#0000bb]AddDays[/COLOR][/COLOR] [COLOR=#000000][COLOR=#007700] + [/COLOR][COLOR=#0000bb]IIf[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]WdBegDate +[/COLOR][/COLOR][COLOR=#000000][COLOR=#0000bb]AddDays [/COLOR][COLOR=#007700]> [/COLOR][COLOR=#0000bb]7[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000bb]1[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000bb]0[/COLOR][COLOR=#007700])[/COLOR][/COLOR]
[COLOR=#000000][COLOR=#0000bb] TotalDaysAdded [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]TotalDaysAdded [/COLOR][COLOR=#007700]+ [/COLOR][COLOR=#0000bb]IIf[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]RestTime [/COLOR][COLOR=#007700]<> [/COLOR][COLOR=#0000bb]0[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000bb]1[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000bb]0[/COLOR][COLOR=#007700])[/COLOR][COLOR=#007700]
If [/COLOR][COLOR=#0000bb]RestTime [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]0 Then
GetEndPoint [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]Int[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]BeginDate[/COLOR][COLOR=#007700]) + [/COLOR][COLOR=#0000bb]EndAft [/COLOR][COLOR=#007700]/ [/COLOR][COLOR=#0000bb]24 [/COLOR][COLOR=#007700]+ [/COLOR][COLOR=#0000bb]_
TotalDaysAdded [/COLOR][COLOR=#007700]+ [/COLOR][COLOR=#0000bb]IIf[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]Weekday[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]BeginDate [/COLOR][COLOR=#007700]+ [/COLOR][COLOR=#0000bb]TotalDaysAdded[/COLOR][COLOR=#007700]) = [/COLOR][COLOR=#0000bb]1[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000bb]1[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000bb]0[/COLOR][COLOR=#007700])
Exit Function
[/COLOR][COLOR=#0000bb]End [/COLOR][COLOR=#007700]If
[/COLOR][COLOR=#0000bb]End [/COLOR][COLOR=#007700]If
[/COLOR][COLOR=#0000bb]GetEndPoint [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]Int[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]BeginDate[/COLOR][COLOR=#007700]) + [/COLOR][COLOR=#0000bb]TotalDaysAdded [/COLOR][COLOR=#007700]+ [/COLOR][COLOR=#0000bb]BeginMor [/COLOR][COLOR=#007700]/ [/COLOR][COLOR=#0000bb]24
[/COLOR][COLOR=#007700]If [/COLOR][COLOR=#0000bb]Weekday[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]GetEndPoint[/COLOR][COLOR=#007700]) = [/COLOR][COLOR=#0000bb]1 Then GetEndPoint [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]GetEndPoint [/COLOR][COLOR=#007700]+ [/COLOR][COLOR=#0000bb]1
GetEndPoint [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]GetEndPoint [/COLOR][COLOR=#007700]+ [/COLOR][COLOR=#0000bb]RestTime [/COLOR][COLOR=#007700]/ [/COLOR][COLOR=#0000bb]24 [/COLOR][COLOR=#007700]+ [/COLOR][COLOR=#0000bb]IIf[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]RestTime [/COLOR][COLOR=#007700]+ [/COLOR][COLOR=#0000bb]BeginMor [/COLOR][COLOR=#007700]> [/COLOR][COLOR=#0000bb]EndMor[/COLOR][COLOR=#007700], Break / [/COLOR][COLOR=#0000bb]24[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000bb]0[/COLOR][COLOR=#007700])
[/COLOR][COLOR=#0000bb]End [/COLOR][COLOR=#007700]Function [/COLOR][/COLOR]
bạn có thể giúp mình liên quan đến tiến độ sản xuất được ko. Vui lòng liên hệ 0903.477.477, hoặc bạn cjho minh sdt của bạnXin gửi lên bài giải của em. Hoàn toàn bằng công thức.
Nhưng đơn vị thời gian nhỏ nhất là mỗi 30 phút. Em không thể làm với thời gian nhỏ hơn...
Nhờ các bác kiểm tra dùm xem có sai ở đâu nữa không.